私は、学生に統合を導入する際に使用したいと思っている大学の数学クラスのアクティビティを準備しています。彼らには、ある機能とこの機能のプロットが与えられます。次に、彼らは一定の積分を計算し、はさみのペアを使用して、曲線の下の領域を切り取る予定です。スケール上では、この用紙を計量し、ディスプレイ上の値を特定の用紙密度で割り、その結果を以前に計算した値と比較します。作業を行うには、プロット内の1単位が1センチメートルになることが重要です。正確な単位と測定値でプロットを作成する方法
私はこれをmatplotlibとlatexでやろうとしました。しかし、それはまったく機能しません。まず、次のPythonコードを使用してプロットを生成します。
import numpy as np
import matplotlib.pyplot as plt
def cm2inches(value):
inch = 2.54
return value/inch
plt.ioff()
#Direct input
plt.rcParams['text.latex.preamble']=[r"\usepackage{lmodern}"]
#Options
params = {'text.usetex' : True,
'font.size' : 10,
'font.family' : 'lmodern',
'text.latex.unicode': True,
}
plt.rcParams.update(params)
def f(x):
return x*x
h = 0.01
x_min = 0.0
x_max = 21.0
X = np.arange(x_min,x_max,h)
Y = f(X)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlabel(r'$x$')
plt.ylabel(r'$y$')
ratio = 400./400 #height/width
fig.set_size_inches(cm2inches(x_max),cm2inches(x_max*ratio))
ax.xaxis.set_tick_params(width=0.3)
ax.yaxis.set_tick_params(width=0.3)
for axis in ['top','bottom','left','right']:
ax.spines[axis].set_linewidth(0.3)
plt.subplots_adjust(bottom=0,right=1,top=1,left=0,wspace=0,hspace=0)
plt.axis([x_min,x_max,x_min,x_max])
plt.plot(X,Y,alpha=0.7,lw=0.5)
plt.grid(lw=0.2)
plt.savefig('0.pdf')
fig = plt.close()
ファイル0.pdfは210mm x 210mmです。次に、私のラテックス文書にこのファイルをインポートしようとしています:
\documentclass[A4,pdftex,10pt]{article}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[total={210mm,296mm},top=1.6cm,bottom=1cm,left=0cm,right=0cm]{geometry}
\begin{document}
\begin{figure}[H]
\includegraphics{0}
\end{figure}
\end{document}
これはちょうど21cm幅です。しかし、右にはギャップがあります。この仕事をするために私は何ができますか? dpiを変更する必要がありますか?
これはラテックスレンダリングやPythonの表示で問題ですか(つまり、表示するだけで正しいですか)?あるいは、ジュピターのノートブックと(コード・セルに直接ラテックスを含めて)ちょうど試してみましたか?(http://nbviewer.jupyter.org/github/ipython/ipython/blob/2.x/examples/Notebook/Display% 20System.ipynb#LaTeX)これにより、サイズ属性を使って遊ぶのが簡単になるでしょうか? – JGreenwell
私はA4ページを印刷する必要があり、このページに正しいスケーリングの図がなければなりません。私はすでに多くの時間を費やしているので、上記のコードを動作させたいと思います。 – Michael
私がラテックスを取り除くと、画像が正しいサイズで表示されます(これはラテックスのレンダリングの問題です)、正しく表示されず、これがPythonコードの問題です(この情報を含めるためにあなたの質問を編集するコメントには答えないでください) – JGreenwell