ニューヨーク時代の思い出… 新山は東工大の大学院 (修士課程) を卒業後、 米ニューヨーク大学 の計算機科学科に 6年間 (博士課程5年 + 研究員1年) 通っていた。
今回は、論文の図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つの問題がある:
fig3.pdf) をダウンロードすると、
時間がかかるうえ、ファイルサイズが巨大 (約1.9MBytes) もある。
これは、非効率である。
画像ファイルが巨大なのは、
これがPDF形式 (fig3.pdf) であることによるものである。
このため、描画も非常に時間がかかってしまう。
fig3.pdf を実際に
ダウンロードして拡大せよ。
fig3.pdf から fig3.png に変更せよ。
できたファイルをダウンロードし、違いを確認せよ。
plt.yscale("log")
これまでに学習したことを使えば、 論文の図をすべて描くことができる:
論文のグラフ 図2 〜 図7 の画像ファイル、 およびそれを生成する matplotlib のプログラムすべてを 1個の Zipファイル にまとめよ:
以下、描き方に関する説明:
cnm/ratio-join.txt ではなく、
hn/ratio-join-500K.txt を使えばよい。
図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 で提出すればよい。
011011011011011 → 011×5
x^2 + y^2
\sqrt{x^2 + y^2}
\frac{x}{y}
x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
f(a) = \frac{1}{2\pi i} \oint\frac{f(z)}{z-a}dz
今回は、Overleaf というクラウド上で使える LaTeX を使って文書を作成する。
クラウド上でなく、LaTeX を自分の PC にインストールして使いたい場合は、 以下を参照のこと:
hello と入力する。
latexmkrc と入力する。
(注意:
latexmkrc.tex はダメ、.tex の部分を消すこと)

latexmkrc をクリックし、編集画面で以下の文字をペーストする:
(赤線が表示されても気にしない)
$latex = 'platex'; $bibtex = 'pbibtex'; $dvipdf = 'dvipdfmx %O -o %D %S';

main.tex をクリックし、編集画面で以下の文字をペーストする:
\documentclass{jarticle}
\begin{document}
こんにちわ。
\[ \sqrt{a + b} \]
\end{document}

\documentclass[a4j,11pt]{jarticle}
\begin{document} 〜 \end{document} で囲む:
\begin{document}
...
\end{document}
%」以降はコメントとして無視される。
\command」などのように
バックスラッシュ (\) のあとに書いた英単語で表される。
{〜} で
囲む必要がある場合もある。
latexmkrc を作成すること:
$latex = 'platex'; $bibtex = 'pbibtex'; $dvipdf = 'dvipdfmx %O -o %D %S';(自分のPCにLaTeXをインストールした場合は、新しいフォルダを作成する。)

sample.tex ファイルをクリックして リコンパイル し、
正しく文書が表示されることを確認せよ。

\author の中身を自分の名前に書き換えよ。
\section コマンドを使って、
文書の最後に「おわりに」という節を追加せよ。
なお、この演習で使ったプロジェクトは次回の授業でも使うので、 消さずに残しておいたほうがよい。
王様の 耳は ロバの耳。
下の文章のいっていることは本当です。 上の文章がいっていることはウソです。
$ 〜 $
以下が成り立つ: $(a+b)^2 = a^2 + 2ab + b^2$
\[ 〜 \]
以下が成り立つ: \[ (a+b)^2 = a^2 + 2ab + b^2 \]
latexmkrc は正しく作ったか? (latexmkrc.tex ではダメ)
\documentclass が正しく書かれているか?
\begin{document} 〜 \end{document} で囲まれているか?
演習 3-2. を完成させよ。
論文のグラフ 図2 〜 図7 の画像ファイル、
およびそれを生成する matplotlib のプログラムすべてを
1個の Zipファイル にまとめ、提出すること。
ファイル名は kadai1.zip であること。
Zip の中には計10個のファイル (fig2.png, fig2.txt, ...,
fig7.png, fig7.txt) が含まれていなければならず、
採点基準は 1つのファイルにつき 2点 (全部で20点) である。
(授業中は間違って図7 を「図4」と説明していたので、
名前は fig4 でも fig7 でもよい。)
演習 3-4. で作った LaTeX 文書の
PDF ファイルを提出せよ。内容は、LaTeX を使ってあれば何でもよいので、
べつに好きな数式なり文章なりを入れてもかまわない。
(Overleaf のかわりに、自分の PC にインストールした LaTeX を使ってもよい。)
ファイル名はなんでもよいが、拡張子は .pdf であること。