tsj*_*tsj 8 python matplotlib pgf
在使用matplotlib的pgf后端时,我有时会看到如下错误:
! Dimension too large.
<to be read again>
\advance
l.69 ...o{\pgfqpoint{-11.400000in}{-235.382893in}}
Run Code Online (Sandbox Code Playgroud)
这是来自LaTeX处理步骤,如果我向matplotlib询问png,或者在处理嵌入了pgf文件的文档时会发生这种情况.当我设置与数据限制相比非常窄的轴限制时,会发生这种情况.所以我假设pgf接收并尝试处理或绘制整个数据集,并且一些超出预期可见范围的点也在pgf的内部大小限制之外.
MWE:
import matplotlib as mpl
mpl.use("pgf")
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5,5)
y = 100*np.exp(x)
plt.xlim((-0.1,0.1))
plt.ylim((99,101))
plt.plot(x,y)
plt.savefig('exp.png')
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有什么方法可以让matplotlib提供pgf一组有限的数据?或者还有其他解决方案吗?我可以根据我想要的限制截断我提供给pyplot命令的数据,但我希望matplotlib有一个内部解决方案,以避免我从许多个案的烦躁中获取.(还有一种情况,当我在轴上添加样条补丁时,我不知道如何切断部分曲线.)
我看了一些文件,看到get_clip_on()和get_clip_box()的Line2D,但任何常规的情节命令后,前一种方法反正返回true,后者返回一些TransformedBbox规范,大概占轴本身的东西.
小智 -2
试试这个代码
import matplotlib as mpl
mpl.use("pgf")
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5, 5)
y = 100 * np.exp(x)
x_limit = (-0.1, 0.1)
y_limit = (99, 101)
# Filter data based on visible range
visible_data = (x_limit[0] <= x) & (x <= x_limit[1]) & (y_limit[0] <= y) & (y <= y_limit[1])
plt.xlim(x_limit)
plt.ylim(y_limit)
plt.plot(x[visible_data], y[visible_data])
plt.savefig('exp.png')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |