Pyplot axvspan:一个跨度中的多种颜色(垂直)

时间:2016-04-14 09:04:57

标签: python matplotlib

我正在尝试使用多种颜色突出显示x轴上的区域。我已经设法通过沿x轴划分区域来找到解决方案,如下图所示: enter image description here

但是,我想要一个解决方案,其中切片发生在y轴上。以图中的6362为例。有没有办法创建类似虚线的东西,其中每一个破折号(或其他任何名称)是紫色和红色?

修改 这是横向突出显示每个子部分的相关代码

t'...'

1 个答案:

答案 0 :(得分:2)

您可以使用yminymax选项axvspan来创建每个“破折号”。通过循环轴间隔0-1,您可以构建所有破折号。

这是一个快速的功能,我把它放在一起使它有点自动化。使用所需选项调用vspandash,以破折号填充该区域。

import matplotlib.pyplot as plt
import numpy as np

fig,ax = plt.subplots(1)

x=y=np.arange(11)

ax.plot(x,y,'go-')

def vspandash(thisax,xmark,xwidth=0.6,ndash=10,colour1='r',colour2='m'):

    interval = 1./ndash
    hxwidth = xwidth/2.

    for j in np.arange(0,1,interval*2):
        thisax.axvspan(
                xmin=xmark-hxwidth,xmax=xmark+hxwidth,
                ymin=j,ymax=j+interval,
                facecolor=colour1,alpha=0.25,edgecolor='None'
                )
        thisax.axvspan(
                xmin=xmark-hxwidth,xmax=xmark+hxwidth,
                ymin=j+interval,ymax=j+interval*2.,
                facecolor=colour2,alpha=0.25,edgecolor='None'
                )

# Lets explore the different options
vspandash(ax,2)                           # Default width, number of dashes, and colours
vspandash(ax,4,ndash=20)                  # Increase number of dashes
vspandash(ax,6,xwidth=0.3)                # Change width of shaded region
vspandash(ax,8,colour1='b',colour2='g')   # Change colours of dashes

plt.show()

enter image description here