【发布时间】:2018-09-26 12:48:06
【问题描述】:
我正在尝试制作“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 -> 缩放:
【问题讨论】:
-
我猜测这与图表的尺寸有关。也许尝试增加图表的维度。
-
@scales 我尝试了你的想法,添加: fig, ax = plt.subplots(figsize=(5,2), dpi=200, facecolor='w', edgecolor='k')但它并没有改变结果......
-
你可以尝试使用 1000, 2000, 3000,4000 来看看是否有一些交叉点吗?
-
我认为 pdf 导出中的恒定 dpi 存在一些问题,这可能导致位置错误多达 1/72 英寸。请随时通过the issue tracker 提出问题。
-
@Bazingaa 请看看我的编辑。随着长度的增加,错误似乎变得更糟。
标签: python matplotlib