matplotlibのラインプロットに表示される垂直グリッド線の取得


93

プロットに水平グリッド線と垂直グリッド線の両方を取得したいのですが、デフォルトでは水平グリッド線のみが表示されています。私が使用していますpandas.DataFrame、x軸上の日付とラインプロットを生成するためにpythonでSQLクエリから。それらが日付に表示されない理由がわかりません。これに対する答えを検索しようとしましたが、見つかりませんでした。

グラフのプロットに使用したのは、以下の単純なコードだけです。

data.plot()
grid('on')

dataは、日付とSQLクエリからのデータを含むDataFrameです。

以下のコードも追加してみましたが、垂直グリッド線がなくても同じ出力が得られます。

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines

助言がありますか?

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


data.plot(grid="on")私のために働きました
Markus

回答:


102

呼び出しでブール引数を指定する必要がある場合があります。たとえば、のax.yaxis.grid(True)代わりに使用しますax.yaxis.grid()。さらに、両方を使用しているため、に組み合わせることができますax.grid。これは、各ディメンションに対して1回行うのではなく、両方で機能します。

ax = plt.gca()
ax.grid(True)

それで解決するはずです。


試してみましたが、何らかの理由で以前と同じように見えます
Osmond Bishop

1
インタラクティブインタープリタでこれを行っていますか?電話をかけるにグリッドを設定していることを確認してくださいplt.show()
2013

私はiPythonを使用しています。私はplt.show()を追加しようとしましたが、違いはありません。
Osmond Bishop

1
まあこれは奇妙です。あなたのipythonのバージョンは何ですか?また、のようipython --pylabに実行してみてください、そしてplt.grid(True)すぐに実行してください-グリッドが表示されますか?
WIM

plt.grid(True)は垂直グリッド線と水平グリッド線の両方を使用して空のグラフを取得しようとしたので、線グラフでこれを取得できないのは奇妙です。最新バージョンのiPythonを実行しています。
Osmond Bishop

57

plt.gca().xaxis.grid(True) 私にとっての解決策であることが証明されました


6
これmyaxes.grid(which='x')は、matplotlibバージョン1.4.2では機能しませんでした... whichキーワードをまったく機能させることができませんでした。ただし、myaxes.xaxis.grid(True)トリックを実行し、概念的にはIMOの方が優れています。ああ、myaxes.set_axisbelow(True)グリッドをデータの背後に配置する便利な方法を忘れないでください。
travc 2014年

25

matplotlibのドキュメントよるとAxesクラスgrid()メソッドのシグネチャは次のとおりです:

Axes.grid(b = None、which = 'major'、axis = 'both'、** kwargs)
軸グリッドをオンまたはオフにします。

which 'major'(既定)、 'minor'、または 'both'のいずれかを使用して、主目盛グリッド、副目盛グリッド、またはその両方に影響を与えるかどうかを制御できます。

axis 'both'(デフォルト)、 'x'、または 'y'を使用して、描画するグリッド線のセットを制御できます。

したがって、x軸とy軸の両方のグリッド線を表示するには、次のコードを使用できます。

ax = plt.gca()
ax.grid(which='major', axis='both', linestyle='--')

この方法により、グリッド線に何を表示するかを細かく制御できます。



3

短い答え(詳細は以下をお読みください):

ax.grid(axis='both', which='both')

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

あなたがすることは正しく、それはうまくいくはずです。

ただし、この例のX軸はDateTime軸であるため、目盛り(おそらく)はX軸の両端にのみ表示されます。他の目盛りは、小さな目盛りです。

このax.grid()メソッドは、デフォルトで、主目盛にグリッド線を描画します。したがって、プロットには何も表示されません。

以下のコードを使用して、目盛りを強調表示します。メジャーはブルー、マイナーはレッドになります。

ax.tick_params(which='both', width=3)
ax.tick_params(which='major', length=20, color='b')
ax.tick_params(which='minor', length=10, color='r')

次に、グリッド線が副目盛にも表示されるようにするwhich='minor'には、メソッドにを渡します。

ax.grid(b=True, which='minor', axis='x', color='#000000', linestyle='--')

または単に使用which='both'して、主グリッド線と副グリッド線の両方を描画します。そして、これはよりエレガントなグリッド線です:

ax.grid(b=True, which='minor', axis='both', color='#888888', linestyle='--')
ax.grid(b=True, which='major', axis='both', color='#000000', linestyle='-')

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