想知道为什么matplotlib pyplot不会调整边距

时间:2017-09-24 19:32:05

标签: python matplotlib

我想在情节中添加边距,以便0.0远离角落,而不是0.0位于边角。我正在查看the docs,似乎添加此行plt.margins(x_margin, y_margin)应该添加填充。然而,无论该函数调用如何,我的输出仍然是相同的,并且仍然缺少边距填充。

enter image description here

要生成的示例代码:

import matplotlib.pyplot as plt
plt.plot([0, 0.1, 0.3, 0.5, 0.7, 0.9, 1], [0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22], 'ro')
plt.axis([0, 1, 0.15, 0.3])
# Create a 10% (0.1) and 10% (0.1) padding in the
# x and y directions respectively.
plt.margins(0.1, 0.1)
plt.show()

2 个答案:

答案 0 :(得分:2)

绘制数据后,请尝试以下方法:

x0, x1, y0, y1 = plt.axis()
margin_x = 0.1 * (x1-x0)
margin_y = 0.1 * (y1-y0)
plt.axis((x0 - margin_x,
          x1 + margin_x,
          y0 - margin_y,
          y1 + margin_y))

答案 1 :(得分:2)

这里有两个相互矛盾的陈述:
plt.axis([0, 1, 0.15, 0.3])将x轴限制设置为(0,1)。这不能通过plt.margins(0.1, 0.1)取消。

根据目标,您可以

  • 将轴保留为自动缩放并设置plt.margins(0.1, 0.1)以获得10%的边距。
  • 考虑10%页边距,计算您想要的限制;例如如

    lim = [0, 1, 0.15, 0.3]
    plt.axis( [lim[i] +2*(i%2-.5)*(lim[i//2+1]-lim[i//2])*0.1 for i in range(4)] )