ニューヨーク時代の思い出… 新山は東工大の大学院 (修士課程) を卒業後、 米ニューヨーク大学 の計算機科学科に 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
であること。