第4回 - LaTeX (Overleaf) の基本、Zipファイル

注意: 今週は、提出課題が 2つ (小課題4 + 中課題1) あります。

雑談

ニューヨーク時代の思い出… 新山は東工大の大学院 (修士課程) を卒業後、 米ニューヨーク大学 の計算機科学科に 6年間 (博士課程5年 + 研究員1年) 通っていた。

0. 前回までのあらすじ

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) であることによるものである。 このため、描画も非常に時間がかかってしまう。

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

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

演習 3-2. 論文の図をすべて描く (= 中課題 1)

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

図2図3図5図6図7

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

図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 を T2SCHOLA で提出すればよい。

2. Zipファイルとは?

演習 3-3. Zipファイルを調べる
  1. 以前にダウンロードした kadai-plot-data.zip ファイルは何バイトあるか?
  2. この Zip ファイルを展開したフォルダの容量は合計何バイトあるか?
  3. Zip ファイルの圧縮率 (圧縮後サイズ ÷ 圧縮前のサイズ) は何パーセントか?

雑談

3. 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
    

Word と LaTeX の違い

3.1. Overleaf を使う

今回は、Overleaf というクラウド上で使える LaTeX を使って文書を作成する。

クラウド上でなく、LaTeX を自分の PC にインストールして使いたい場合は、 以下を参照のこと:

演習 3-4. 最初の 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.2. LaTeX の書き方・基本

ブレイクアウトルーム演習

各自ブレイクアウトルームに分かれて、 上の 演習 3-4. を実際にやってみよう。

  1. 全員で簡単な自己紹介をする。(カメラをオンにしたほうが仲良くなりやすい。)
  2. まだ演習が終わっていない人 (あるいは、何すればいいかわからない人) が手をあげる。
  3. その人の画面を共有し、周囲の人がやり方をガイドする。(TAも巡回します)
  4. 全員が終わったら、残りの時間は雑談する。

注意: ネット接続が不安定になる人は、カメラを切ってもよい。 万が一、接続が途切れてしまったときは、もう一度入りなおすこと。

4. 本日のまとめ・課題2つ

小課題4. LaTeX で作った PDF を提出する (7月11日締切)

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

中課題1. 論文の図をすべて描く (7月18日締切)

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