【发布时间】:2015-02-23 19:46:24
【问题描述】:
我正在尝试创建栅格数据的无轴等高线图。我设法创建了等高线图,但是我无法完全移除轴。我可以用plt.axis('off') 关闭它们,但坐标轴空白仍然存在。
我做什么:
cnt = plt.contour(my_data)
plt.clabel(cnt, inline=1, fontsize=10)
plt.axis('off')
编辑 我的输出方法
plt.savefig(image_path, transparent=False, bbox_inches='tight', pad_inches=0)
结果:
之前plt.axis('off')
在plt.axis('off')之后
我在 imshow 上遇到了同样的问题,但我已经设法解决了 here,但是同样的技术不能用于轮廓。
那么我如何绘制没有轴的轮廓以及它们留下的任何空白?
编辑 所以我设法确定问题不在代码的'plt.axis('off')'部分。该行实际上完全删除了轴,并且当我调用 plt.show() 时它是可见的,但是当我尝试使用 'plt.savefig()' 保存绘图时,我得到了不需要的空格。这是为什么呢?
我的输出代码:
cnt = plt.contour(my_data)
plt.clabel(cnt, inline=1, fontsize=10)
plt.axis('off')
# no whitespaces
plt.show()
# whitespaces are present
plt.savefig(image_path, transparent=False, bbox_inches='tight', pad_inches=0)
可能的解决方案!? 我确实找到了使我的图像几乎符合我想要的方法:
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
plt.contour(data)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.axis('off')
plt.savefig(image_path, transparent=False, bbox_inches=extent, pad_inches=0)
但是我不能改变情节的纵横比。我认为我没有完全理解这个解决方案。
【问题讨论】:
-
只是为了我的理解:你的意思是留下哪些空格?你的意思是边界处的白色填充?
-
我发布了带有问题的不透明图片。在它们上(通过使用任何图像浏览器打开),您可以看到我正在谈论的空格。但是,图像有可能像我链接的 imshow 问题中那样有一个小的填充。对我来说,最大的问题是大的空白仍然在轴标签和刻度的地方。
-
可能
plt.tight_layout()在plt.show()之前(或者在交互模式开启的情况下最后)解决您的问题? -
@iluengo -
tight_layout更改轴的大小。而已。 DomagojHack 遇到的问题是因为savefig在保存时会覆盖图形的面色。 -
@JoeKington - 实际上听起来他也想使用tight_layout();透明点还在于它发布时尚不清楚发生了什么。
标签: python matplotlib plot contour