python matplotlib重叠一定大小的矩形

问题描述 投票:2回答:2

我试图用matplotlib绘制不同的矩形,它们之间应该有一点间隙,如下例所示:

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle 
import numpy as np

Nmax = 200

xvalues = np.arange(Nmax)

fig = plt.figure()
ax = plt.subplot(111)

for xvalue in xvalues:
    rect = Rectangle(
        xy=(xvalue - 0.25, xvalue),
        width = 0.5,
        height = 1.5,
        facecolor = 'r',
        edgecolor = 'r',
        )
    ax.add_patch(rect)

ax.autoscale_view()
plt.show()

它的工作原理我想为Nmax = 20个矩形工作。下面的Nmax = 20的情节:

enter image description here

由于矩形位置总是相距1'单位',宽度为0.5,因此两个相邻矩形之间的间距始终为0.5。

然而,当我尝试例如200个矩形时,矩形变得更厚并开始重叠。在放大图形时,矩形再次分离。但是将原始数字保存为pdf仍然会产生重叠的矩形。放大pdf,Nmax = 200以下:

enter image description here

我不知道为什么会这样,因为我还指定它们的宽度为0.5。如果有人能给我一个暗示,我会很高兴的。我不确定但是在矢量格式中应该可以准确地确定矩形位置,所以可能将其保存为svg并将其转换为pdf就可以了?

最终解决方案:好的,感谢西风,解决方案是关闭矩形边缘:

edgecolor = 'none',

在matplotlib.finance中将edgecolor更改为'none'也可以解决重叠的烛台条,这似乎是同样的问题here

python matplotlib overlapping
2个回答
0
投票

假设你确实想要使用edgecolor(也就是说,设置edgecolor='none'不是一个选项),你可以生成一个PDF,通过在创建图形时增加figsizedpi来显示框之间的空间:

fig = plt.figure(figsize=(12,4), dpi=600)

如果figsizedpi足够大,则生成pdf的后端将显示矩形之间的空白:

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle 
import numpy as np

Nmax = 200
xvalues = np.arange(Nmax)

fig = plt.figure(figsize=(12,4), dpi=600)
ax = plt.subplot(111)

for xvalue in xvalues:
    rect = Rectangle(
        xy=(xvalue - 0.25, xvalue),
        width = 0.5,
        height = 1.5,
        facecolor = 'r',
        edgecolor = 'r',
        )
    ax.add_patch(rect)

ax.autoscale_view()
# plt.show()
plt.savefig('/tmp/test.pdf')

详情:

enter image description here


另一种选择是在创建Rectangle时减小线宽:

Rectangle(..., edgecolor='b', linewidth=0.01)

0
投票

感谢西风,解决方案是关闭矩形边缘:

edgecolor = 'none',
© www.soinside.com 2019 - 2024. All rights reserved.