【问题标题】:Plotting a 2D line over a figure 2D line in matplotlib在 matplotlib 中的图形 2D 线上绘制 2D 线
【发布时间】:2021-04-02 16:58:13
【问题描述】:

我正在尝试在图形线上绘制一条线,但无法将它准确地绘制在轴上。你可以在这里找到代码:

https://colab.research.google.com/drive/1J12vWUIUr0dDIesMHBU9vYUkjnNKXOqT?usp=sharing

这是二维线的代码,然后保存。

ax = plt.subplot()
ax.plot([10,45], [20,100], color="g")

plt.xticks([])
plt.yticks([])
ax.set_axis_off()
plt.axis([0, 144, 0, 144])
plt.figure(figsize = (2,2))
plt.tight_layout()
plt.show()
fig.savefig('testfig.png')

这是我导入图形线并创建具有完全相同坐标和轴但无法弄清楚的类似线的代码。绿线是导入的线,红线是在导入线的正上方绘制的线。

image = plt.imread('testfig.png')
#fig2 = plt.figure()
#fig2.set_size_inches(1,1)
ax2 = plt.subplot()
ax2.imshow(image, extent=[0, 144, 0, 144])

ax2.plot([10,45], [20,100], color="r")
plt.xticks([])
plt.yticks([])
ax2.set_axis_off()
plt.tight_layout()
plt.axis([0, 144, 0, 144])
plt.figure(figsize = (2,2))
print(image.shape)

plt.show()

可能是因为导出线的形状与我的预期不同,即 144x144。有没有办法在不重新整形的情况下精确地导出 144x144?

【问题讨论】:

  • 你能打开链接的分享吗?无法访问
  • 很抱歉。它现在可供公众使用。
  • 如果你想要一个只有一条线的图像,matplotlib 数字不是最好的方法。查找被告知在原始数组中画一条线。
  • 备注:plt.figure(figsize = (2,2)) 不会改变当前图形大小。它会创建一个具有该大小的新空图形。你可以试试fig = plt.gcf()fig.set_size_inches(2, 2)

标签: python matplotlib plot line


【解决方案1】:

我想通了。经过挖掘,我发现plt.tight_layout() 有一个默认的 1.08 填充:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.tight_layout.html

我唯一想要的是将pad=0 作为参数传递给plt.tight_layout(pad=0)。就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多