假设我想绘制一个非常简单的图形,水平布置2个子图,我想在第二个子图的右侧添加一些文本.我在Jupyter Notebook工作,但这不应该改变任何东西:
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(8, 3))
ax1 = plt.subplot(121)
ax1.plot(x,y1)
ax2 = plt.subplot(122)
ax2.plot(x,y2)
ax2.text(1.05,0.7, 'Some text here', horizontalalignment='left', transform=ax2.transAxes)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试导出图形时,右边的文本会被删除:
plt.savefig(r'C:\mypy\test_graph.png', ext='png');
Run Code Online (Sandbox Code Playgroud)
使用plt.tightlayout()
,如建议在这里使问题变得更糟.
我该如何最好地解决这个问题?
Imp*_*est 16
Jupyter笔记本显示该图的已保存的png版本.在此保存期间,使用该选项%matplotlib inline
.
为了复制您在jupyter输出中看到的数字,您还需要使用此选项.
plt.savefig("output.png", bbox_inches="tight")
Run Code Online (Sandbox Code Playgroud)
此命令的作用是扩展或缩小已保存图形的区域以包括其中的所有艺术家.
或者,您可以缩小图形的内容,以便有足够的空间使文本适合原始图形.
这可以用例如
plt.subplots_adjust(right=0.7)
Run Code Online (Sandbox Code Playgroud)
这意味着最右边的轴停止在图形宽度的70%.
添加bbox_inches="tight"
到 savefig **kwargs 将做到这一点:
plt.savefig(r'C:\mypy\test_graph.png', ext='png', bbox_inches="tight")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6292 次 |
最近记录: |