Pythonでラインスタイルが異なるメジャーグリッドラインとマイナーグリッドラインを作成する方法


122

私は現在、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='-')

回答:


174

実際、それは設定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()ます。

ここに画像の説明を入力してください


31
場合によってplt.minorticks_on()は、マイナーグリッドを実際に表示することも必要になります。stackoverflow.com/a/19940830/209246を
eqzx 2017

2
ドキュメントから:「クワーグが指定されている場合、グリッドが必要で、bがTrueに設定されていると想定されます。」-省略してもかまいませんb=True
miku 2017年

私は二重対数プロットで同じことを試みました。残念ながら、x軸は主な太さのみを示しています。マイナーシックもオンにすることは可能ですか?
Alexander Cska

1
@関数にaxis="both"パラメーターを追加する必要があるアレクサンダーplt.grid()
Kanmani

これをデフォルトのスタイルにするrcParamプロパティはありますか?
Kanmani

21

簡単な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()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.