Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建具有精确单位和测量值的绘图_Python_Linux_Matplotlib_Plot_Latex - Fatal编程技术网

Python 如何创建具有精确单位和测量值的绘图

Python 如何创建具有精确单位和测量值的绘图,python,linux,matplotlib,plot,latex,Python,Linux,Matplotlib,Plot,Latex,我正在为大学数学课准备一项活动,我想在向学生介绍整合时使用它。它们将被赋予一些函数和该函数的绘图。然后他们要计算定积分,用剪刀剪出曲线下的区域。他们将在天平上称量这张纸,将显示屏上的数值除以具体的纸张密度,并将结果与之前计算的数值进行比较。对于要执行的任务,重要的是绘图中的1个单位将是1实际厘米 我试着用matplotlib和latex来做这件事。但这不太管用。首先,我使用以下python代码生成一个绘图: import numpy as np import matplotlib.pyplot

我正在为大学数学课准备一项活动,我想在向学生介绍整合时使用它。它们将被赋予一些函数和该函数的绘图。然后他们要计算定积分,用剪刀剪出曲线下的区域。他们将在天平上称量这张纸,将显示屏上的数值除以具体的纸张密度,并将结果与之前计算的数值进行比较。对于要执行的任务,重要的是绘图中的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。然后我尝试将此文件导入latex文档:

\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吗

解决了!见线程。在上面的代码中,我更改了

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

这是latex渲染或python显示中的问题吗(即,如果只显示它,是否正确)?或者,您是否尝试过使用jupyter笔记本,因为这样可以更容易地使用大小属性?我需要打印一张A4页,在这页上应该有正确比例的图表。我想让上面的代码正常工作,因为我已经投入了很多时间。好的,我要问的问题是,如果我们删除latex(我怀疑这是latex渲染问题),图像是否会以正确的大小显示,或者它不能正确显示,这是Python代码的问题(不要在评论中回答,只需编辑你的问题以包含这些信息)它必须是渲染。我在中间添加了信息。