matplotlib plt.Rectangle的怪异行为

时间:2018-09-26 12:48:06

标签: python matplotlib

我正在尝试制作“ matplotlib蛋糕”。 ;)

我有以下代码: 它应该打印一个蓝色和红色的矩形,再除以绿色的“涂层”。

import matplotlib.pyplot as plt

def save_fig(layer):
    # Hide the right and top spines
    ax.spines['right'].set_visible(False)
    ax.spines['top'].set_visible(False)
    # Sacale axis
    plt.axis('scaled')
    fig.savefig(layer+'.pdf', dpi=fig.dpi)
    fig.savefig(layer+'.jpeg', dpi=fig.dpi)

gap =10
fig, ax = plt.subplots()
rectangle_gap = plt.Rectangle((0-gap, 0), 500+2*gap, 100+gap, color ="green");
plt.gca().add_patch(rectangle_gap);
rectangle = plt.Rectangle((0, 0), 500, 100, color = "red");

plt.gca().add_patch(rectangle)
rectangle = plt.Rectangle((0, 100+gap), 500, 100, color = "blue");
plt.gca().add_patch(rectangle);


save_fig("test")

这将导致以下输出: enter image description here

如您所见,输出正是我所期望的。太好了! 但是,我使用了参数...

如果我使顶部蓝色矩形的宽度很长,它将以某种方式进入绿色分隔涂层...

这里是更改后的代码(唯一更改的是顶部矩形的宽度,从500到5000):

gap =10
fig, ax = plt.subplots()
rectangle_gap = plt.Rectangle((0-gap, 0), 500+2*gap, 100+gap, color ="green");
plt.gca().add_patch(rectangle_gap);
rectangle = plt.Rectangle((0, 0), 500, 100, color = "red");

plt.gca().add_patch(rectangle)
rectangle = plt.Rectangle((0, 100+gap), 5000, 100, color = "blue");
plt.gca().add_patch(rectangle);

现在输出看起来像这样:

enter image description here

如果我打开pdf输出并放大,您会明白我的意思:

enter image description here

这是为什么,我该如何解决?

编辑: 如@Bazingaa所建议,我尝试过:

1000:

enter image description here

1000->缩放:

enter image description here

2000:

enter image description here

2000->缩放:

enter image description here

3000:

enter image description here

3000->缩放:

enter image description here

和...

10000

enter image description here

10000->缩放:

enter image description here

1 个答案:

答案 0 :(得分:0)

要回答:我在github上被告知要执行以下操作:

  

将所有矩形的linewidth属性设置为0(linewidth = 0)。

这解决了问题! :)

原因:

  

线宽1磅,矩形边缘重叠0.5磅。您   绘制的地块是如此之小,可见。