如何创建具有精确单位和尺寸的图

时间:2017-02-19 14:11:45

标签: python linux matplotlib plot latex

我正在准备一个大学数学课程的活动,我想在向学生介绍整合时使用它。他们将获得一些功能和这个功能的情节。然后他们将计算定积分并使用一把剪刀切出曲线下面积。在一个比例上,他们将称重这张纸,将显示器上的值除以特定的纸张密度,并将结果与​​之前计算的值进行比较。为了完成任务,重要的是图中的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}  

现在应该是21厘米宽。但右翼存在差距。我能做些什么来完成这项工作?我必须改变dpi吗?

1 个答案:

答案 0 :(得分:1)

解决了!请参阅this主题。在上面的代码中我改变了

\documentclass[a4paper,pdftex,10pt]{article}