如何在Python中使用不同的线型创build主要和次要网格线

我目前正在使用matplotlib.pyplot来创buildgraphics,并希望主要的网格线是纯色的,黑色的,而小的网格线是灰色的或者是虚线的。 在网格属性哪个= both / major / mine,然后颜色和linestyle是简单的由linestyle定义的,有没有什么方法可以指定小的linestyle?

我到目前为止的适当的代码是

 plt.plot(current, counts, 'rd', markersize=8) plt.yscale('log') plt.grid(b=True, which='both', color='0.65',linestyle='-') 

实际上,分别设置majorminor简单:

 In [9]: plot([23, 456, 676, 89, 906, 34, 2345]) Out[9]: [<matplotlib.lines.Line2D at 0x6112f90>] In [10]: yscale('log') In [11]: grid(b=True, which='major', color='b', linestyle='-') In [12]: grid(b=True, which='minor', color='r', linestyle='--') 

小网格的问题在于你必须打开小刻度标记。 在上面的代码中,这是通过yscale('log')来完成的,但是也可以使用plt.minorticks_on()来完成。

在这里输入图像说明

一个简单的DIY方法就是自己制作网格:

 import matplotlib.pyplot as plt fig=plt.figure() ax = fig.add_subplot(111) ax.plot([1,2,3],[2,3,4],'ro') for xmaj in ax.xaxis.get_majorticklocs(): ax.axvline(x=xmaj,ls='-') for xmin in ax.xaxis.get_minorticklocs(): ax.axvline(x=xmin,ls='--') for ymaj in ax.yaxis.get_majorticklocs(): ax.axhline(y=ymaj,ls='-') for ymin in ax.yaxis.get_minorticklocs(): ax.axhline(y=ymin,ls='--') plt.show()