问题:如何在Python中创建具有不同线型的主要和次要网格线
我目前正在使用matplotlib.pyplot
图形来创建图形,并且希望使主要的网格线为实线和黑色,而次要的网格线为灰色或虚线。
在网格属性中,which=both/major/mine
然后通过线型简单定义颜色和线型。有没有办法只指定次要线型?
我到目前为止合适的代码是
plt.plot(current, counts, 'rd', markersize=8)
plt.yscale('log')
plt.grid(b=True, which='both', color='0.65', linestyle='-')
回答 0
实际上,它和设置一样简单,major
并且minor
分别是:
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()
。
回答 1
一种简单的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()