matplotlib 如何创建具有不同线型的主网格线和次网格线

yzxexxkh  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(123)

我目前使用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='-')
de90aj5v

de90aj5v1#

实际上,它就像单独设置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()完成。

ryoqjall

ryoqjall2#

一个简单的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()

相关问题