我正在尝试制作“ 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")
如您所见,输出正是我所期望的。太好了! 但是,我使用了参数...
如果我使顶部蓝色矩形的宽度很长,它将以某种方式进入绿色分隔涂层...
这里是更改后的代码(唯一更改的是顶部矩形的宽度,从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);
现在输出看起来像这样:
如果我打开pdf输出并放大,您会明白我的意思:
这是为什么,我该如何解决?
编辑: 如@Bazingaa所建议,我尝试过:
1000:
1000->缩放:
2000:
2000->缩放:
3000:
3000->缩放:
和...
10000
10000->缩放:
答案 0 :(得分:0)
要回答:我在github上被告知要执行以下操作:
将所有矩形的linewidth属性设置为0(linewidth = 0)。
这解决了问题! :)
原因:
线宽1磅,矩形边缘重叠0.5磅。您 绘制的地块是如此之小,可见。