情報リテラシ第二 (1a) 第4回

注意: 今週は、提出課題が 2つ (小課題4 + 中課題1) あります。 締め切りはどちらも 7月20日
  1. 前回までのあらすじ
  2. matplotlib つづき
  3. LaTeXとは?
  4. 本日のまとめ・小課題
  5. 次回予告

雑談

0. 前回までのあらすじ

演習 4-1. (前回の復習)
  1. 以下のパス名は絶対パス名か、相対パス名か?
    /home/shinyama/work
  2. カレントディレクトリが C のとき…
    A B C D E G H H K M カレントディレクトリ
    1. ファイル A への相対パス名を答えよ。
    2. ファイル M への相対パス名を答えよ。
  3. カレントディレクトリを /home/john とする:
    以下のフォルダ・ファイルを描き加えよ:
    home john
    • ./mail.txt (ファイル)
    • /share/ (フォルダ)
    • study/report.txt (ファイル)
    • ../work/exp1.data (ファイル)
    • /home/mary/fig.plot (ファイル)
    • ./study/../../game/ (フォルダ)

1. matplotlib つづき

今回は、論文の図3 を描くことを考える:

このようなグラフは「散布図」と呼ばれている。matplotlib を使って このグラフを描くには、前回のつづき (kadai-plot-data フォルダの データを使って図を描いた状態) で、以下のように入力する:

import numpy as np
import matplotlib.pyplot as plt

a = np.genfromtxt("./drive/My Drive/kadai-plot-data/cnm/ratio-join.txt")
plt.scatter(a[:,0], a[:,1], s=0.1, color="black")

plt.xlabel("#Joins")
plt.ylabel("Consolidation Ratio (#edges)")
plt.savefig("fig3.pdf")
plt.show()
すると、(すごい時間がかかった後) 以下のような図が表れる。

ここには 2つの問題がある:

画像ファイルが巨大なのは、 これがPDF形式 (fig3.pdf) であることによるものである。 このため、描画も非常に時間がかかってしまう。

演習 4-2. 散布図を描く
  1. 上のコードを実行し、fig3.pdf を実際に ダウンロードして拡大せよ。
  2. 上のコードを変更して、保存するファイル名を fig3.pdf から fig3.png に変更せよ。 できたファイルをダウンロードし、違いを確認せよ。
  3. コード中の適当な位置に以下の1行を挿入し、 縦軸を対数グラフにせよ:
    plt.yscale("log")

これまでに学習したことを使えば、 論文の図をすべて描くことができる:

中課題 1. 論文の図をすべて描く

論文のグラフ 図2 〜 図6 の画像ファイル、 およびそれを生成する matplotlib のプログラムすべてを 1個の zipファイル にまとめ、提出せよ:

図2図3図4図5図6

以下、描き方に関する説明:

図2 だけは特別で、これは以下のプログラムを使って 棒グラフ (bar) を 5回表示させればよい:

import numpy as np
import matplotlib.pyplot as plt

a = np.genfromtxt("./drive/My Drive/kadai-plot-data/cnm/time-join-500K.txt")
plt.bar(a[:,0], a[:,1], 10000, edgecolor="black", color="???", label="#Nodes = 500K")

a = np.genfromtxt("./drive/My Drive/kadai-plot-data/cnm/time-join-400K.txt")
plt.bar(a[:,0], a[:,1], 10000, edgecolor="black", color="???", hatch="???", label="#Nodes = 400K")

a = np.genfromtxt("./drive/My Drive/kadai-plot-data/cnm/time-join-300K.txt")
plt.bar(a[:,0], a[:,1], 10000, edgecolor="black", color="???", hatch="???", label="#Nodes = 300K")

a = np.genfromtxt("./drive/My Drive/kadai-plot-data/cnm/time-join-200K.txt")
plt.bar(a[:,0], a[:,1], 10000, edgecolor="black", color="???", hatch="???", label="#Nodes = 200K")

a = np.genfromtxt("./drive/My Drive/kadai-plot-data/cnm/time-join-100K.txt")
plt.bar(a[:,0], a[:,1], 10000, edgecolor="black", color="???", label="#Nodes = 100K")

plt.xlabel("#Joins")
plt.ylabel("Time [sec]")
plt.legend()
plt.show()

ここで、color="???" の ??? 部分には、 white あるいは black のどちらかを入れる。 hatch="???" の ??? 部分には、 //xx あるいは xxxx のどれかを入れると、 論文にあるのと同じ模様でグラフが描画できる。

生成する画像ファイルはすべて png形式とする。 これに加えて matplotlib の各プログラムを txt形式のファイルで保存し、 これらをひとつのフォルダの中に入れる:

できあがった kadai1.zip を OCW-i で提出すればよい。

2. LaTeXとは?

LaTeXによる数式の例

  1. x^2 + y^2
    
  2. \sqrt{x^2 + y^2}
    
  3. \frac{x}{y}
    
  4. x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
    
  5. f(a) = \frac{1}{2\pi i} \oint\frac{f(z)}{z-a}dz
    

2.1. Overleaf を使う

今回は、Overleaf というサイトを使って LaTeX 文書を作成する。

自分の PC にインストールしたい場合は、 以下を参照のこと:

演習4-3. 最初の Overleaf プロジェクト
  1. まず Overleaf登録する ボタンを押し、メールアドレスとパスワードをつけて アカウントを作成する。
  2. 画面左上にある 新規プロジェクト ボタンを押し、 さらに 空のプロジェクト を選ぶ。 プロジェクト名として、hello と入力する。
  3. 画面が変わるので、左上の 新規ファイル ボタンを押す。 ファイル名として latexmkrc と入力する。 (注意: latexmkrc.tex はダメ、.tex の部分を消すこと)
  4. latexmkrc をクリックし、編集画面で以下の文字をペーストする: (赤線が表示されても気にしない)
    $latex = 'platex';
    $bibtex = 'pbibtex';
    $dvipdf = 'dvipdfmx %O -o %D %S';
    
  5. 左上隅にある メニュー ボタンをクリックし、設定の 「コンパイラ」の部分で LaTeX を選ぶ。
  6. main.tex をクリックし、編集画面で以下の文字をペーストする:
    \documentclass{jarticle}
    \begin{document}
    こんにちわ。
    \[ \sqrt{a + b} \]
    \end{document}
    
  7. 右上にある リコンパイル ボタンをクリックすると、 右半分に完成した文書が表示される。 (エラーがある場合は赤い文字が表示される)
  8. さらに右の ダウンロード ボタンをクリックすると、 完成した PDFファイルがダウンロードされる。

3. 本日のまとめ・小課題

中課題 1. 論文の図をすべて描く

詳細は 上に書いた。 論文のグラフ 図2 〜 図6 の画像ファイル、 およびそれを生成する matplotlib のプログラムすべてを 1個の zipファイル にまとめ、提出せよ。 ファイル名は kadai1.zip であること。 Zip の中には計10個のファイル (fig2.png, fig2.txt, ..., fig6.png, fig6.txt) が含まれていなければならず、 採点基準は 1つのファイルにつき 2点 (全部で20点) である。

演習 4-4. LaTeX で作った PDF を提出する (小課題4)

演習 4-3. で作った PDF ファイルを提出せよ。 内容は、LaTeX を使ってあれば何でもよいので、 べつに好きな数式なり文章なりを入れてもかまわない。 (Overleaf のかわりに、自分の PC にインストールした LaTeX を使ってもよい。) ファイル名はなんでもよいが、拡張子は .pdf であること。

4. 次回予告


Yusuke Shinyama