在Matplotlib中,如何避免axvspan重叠?

2024-06-03 02:36:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到两个相邻区域重叠,所以在中间出现了一条恼人的线。 我尝试了“capstyle='butt'”来避免行之间的重叠,但在这里它不能起作用。在

下面是一个最小的例子:

import matplotlib.pylab as plt

ax = plt.subplot(111)

ax.axvspan(0, 0.5, color = 'red', alpha = 0.13, capstyle = 'butt')
ax.axvspan(0.5, 1, color = 'blue', alpha = 0.13, capstyle = 'butt')

plt.show()

Tags: importalpha区域matplotlibaspltredax
2条回答

axvspan内使用facecolor,而不是color。@heltonbiker的解决方案非常有效,它消除了边界的宽度。但是,至少在我使用的matplotlib版本2.0.0中,仅仅使用facecolor并不能画出边界。在

import matplotlib.pylab as plt

fig,ax = plt.subplots()

ax.axvspan(0, 0.5, facecolor = 'red', alpha = 0.13)
ax.axvspan(0.5, 1, facecolor = 'blue', alpha = 0.13)

plt.show()

仅使用facecolor将不会绘制边框: enter image description here

使用color将填充矩形并绘制边框: enter image description here

您遇到的问题不是由于线帽造成的,因为axvspan绘制了一个多边形。问题是,默认情况下,这个多边形有一个给定线宽的边界(我想是一个像素)。在

因此,要只得到没有“边界”的区域,请将线宽(lw)设置为零:

import matplotlib.pylab as plt

ax = plt.subplot(111)

ax.axvspan(0, 0.5, color = 'red', alpha = 0.13, lw=0)
ax.axvspan(0.5, 1, color = 'blue', alpha = 0.13, lw=0)

plt.show()

相关问题 更多 >