2012-02-03 24 views
84

現在、matplotlib.pyplotを使ってグラフを作成していますが、メジャーなグリッド線は黒と黒、マイナーは灰色または破線です。Pythonで異なる線種を持つメジャーとマイナーのグリッド線を作成する方法

グリッドプロパティでは、which=both/major/mineとし、colorとlinestyleはlinestyleで単純に定義します。マイナーな髪型だけを指定する方法はありますか?

私が持っている適切なコードは、これまで

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

答えて

120

実際には、別途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()で行うこともできます。

enter image description here

+5

実際にマイナーグリッドが表示されるように、 'plt.minorticks_on()'を呼び出す必要があることもあります。 http://stackoverflow.com/a/19940830/209246 – eqzx

+0

を参照してください。[docs](https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.grid.html)から: "kwargsが提供されている場合は、グリッドが必要で、bがTrueに設定されていると仮定します。 - 'b = True'を省略するかもしれません。 – miku

18

グリッドを自分で作ることであろう簡単な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() 
+0

これは素晴らしい仕事でした。 –

関連する問題