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

her*_*cho 4 python plot matplotlib

我注意到两个相邻区域重叠,所以在中间出现一条恼人的线.我试过"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()
Run Code Online (Sandbox Code Playgroud)

hel*_*ker 7

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

因此,要获得没有"边界"的区域,请将linewidth(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()
Run Code Online (Sandbox Code Playgroud)


Pab*_*yes 6

而不是color,使用facecolorinside axvspan。@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()
Run Code Online (Sandbox Code Playgroud)

使用 onlyfacecolor不会绘制边框: 在此处输入图片说明

使用color将填充矩形并绘制边框: 在此处输入图片说明