web-dev-qa-db-ja.com

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

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

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

data.plot()
grid('on')

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

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

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

助言がありますか?

enter image description here

77
Osmond Bishop

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

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

それはあなたを整理する必要があります。

83
wim

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

43
matt

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

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

whichを「major」(デフォルト)、「minor」、または「both」に設定して、大目盛りグリッド、小目盛りグリッド、またはその両方が影響を受けるかどうかを制御できます。

axisは、「両方」(デフォルト)、「x」、または「y」のいずれかで、描画するグリッド線のセットを制御できます。

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

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

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

13
jdhao

多分これは問題を解決することができます: matplotlib、プロット上のグリッドのサイズを定義する

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

真実は、グリッドが機能しているということですが、00:00にはvグリッドが1つしかなく、他にはグリッドがありません。私は同じ問題に、11月1日には何日もの間グリッドが1つしかないという問題に出会います。

4
Lory_yang

水平線のみ

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

これは働いた

0
Mudit