pandasとMatplotlibを使用してカスタマイズされたDateTimeインデックスを持つグループ化された棒グラフ

MichaelA

カスタマイズされた日時インデックスを表示するグループ化された棒グラフを作成したいと思います。完全な日付ではなく、月と年だけを表示します。バーをグループ化して積み重ねないようにしたい。

私はパンダがこれを簡単に処理できると思いました:

import pandas as pd
import matplotlib.pylab as plt
import matplotlib.dates as mdates

testdata = pd.DataFrame({"A": [1, 2, 3]
                       ,"B": [2, 3, 1]
                       , "C": [2, 3, 1]}  
                       ,index=pd.to_datetime(pd.DatetimeIndex(
                            data=["2019-03-02", "2019-04-01","2019-05-01"])))
ax = testdata.plot.bar()

これにより、必要なプロットが作成されます。これまでの日付を、2019年3月、2019年4月、2019年5月などのより単純なものに変更したいと思います。グループ化された棒グラフですが、x軸ラベルは最悪です

カスタム日付フォーマッターを使用すると機能すると思いましたので、試してみました

ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))

しかし、私のレーベルが完全になくなったよりも。そして、この質問は、パンダとDateFormatterが少し難しい関係にあることを意味します。したがって、私はMatplotlibの基本でそれをやろうとしました:

fig, ax = plt.subplots()
width = 0.8
ax.bar(testdata.index, testdata["A"]) 
ax.bar(testdata.index, testdata["B"])
ax.bar(testdata.index, testdata["C"])
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))
plt.show()

これで、日付の表現は期待どおりになりましたが(空白を減らすことはできますが)、データが重複しているため、役に立ちません。 ここに画像の説明を入力してください

私が使用しているDateTime-Indexのため、幅を定義してx値から減算しても(通常は提案されているように)役に立ちません。DatetimeIndesとfloatの減算がサポートされていないというエラーが表示されます。

fig, ax = plt.subplots()
width = 0.8
ax.bar(testdata.index-width, testdata["A"]) 
ax.bar(testdata.index, testdata["B"])
ax.bar(testdata.index+width, testdata["C"])
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))
plt.show()

だから今、私はアイデアが不足していて、入力を望んでいます

クアンホアン

ax.xaxis.set_major_locator(mdates.MonthLocator())フードの下でパンダがバーをプロットしrange(len(df))、それに応じてティックの名前を変更するため、理由は失敗します

プロット後にxticklabelsを取得し、再フォーマットできます。

ax = testdata.plot.bar()

ticks = [tick.get_text() for tick in ax.get_xticklabels()]
ticks = pd.to_datetime(ticks).strftime('%b %Y')
ax.set_xticklabels(ticks)

これは、ImpotanceOfBeingErnestと同じ結果になります。

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

別の、おそらくより良い方法は、各列のバーをシフトすることです。これは、列が多く、xtickの数を減らしたい場合に効果的です。

fig, ax = plt.subplots()

# define the shift
shift = pd.to_timedelta('1D')

# modify the base of each columns, can do with a for loop
ax.bar(testdata.index + shift, testdata["A"]) 
ax.bar(testdata.index, testdata["B"])
ax.bar(testdata.index - shift, testdata["C"])
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))
plt.show()

出力:

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

行インデックスでグループ化された棒グラフ

分類Dev

マルチインデックスのグループ化された棒グラフ

分類Dev

複数のx軸ggplot2またはカスタマイズされたラベルをスタック棒グラフに追加します

分類Dev

nouisliderのスライダーを使用してLeaflet.jsでクラスター化されたマーカーをフィルタリングする方法

分類Dev

surefireプラグインを使用してカスタマイズされたフォルダー構造でテストを実行する方法

分類Dev

Matlab-グループ化された棒グラフの日時値でxaxisをカスタマイズする方法は?

分類Dev

グループ化された色をラベルとして持つmatplotlib相関行列ヒートマップ

分類Dev

d3 json ファイルを使用したツールチップ付きのレスポンシブなグループ化された棒グラフ

分類Dev

プラグイン/拡張機能を使用してカスタマイズされたビルドのMavenベストプラクティス?

分類Dev

年と月でグループ化されたデータに欠落している月の行を作成します(マルチインデックス)

分類Dev

simple_form gemを使用して作成されたデバイスのログインフォームとサインアップフォームをカスタマイズするにはどうすればよいですか?

分類Dev

カスタマイズされたスタイルをサポートするVimフォーマッタープラグインはありますか?

分類Dev

pandasとxlsxwriterライブラリを使用したクラスター化されたグラフの調整

分類Dev

Python:指定された列を使用してx軸を持つパンダデータフレームの棒グラフをプロットします

分類Dev

Rを使用して2つのグループのカスタマイズされた森林プロットを作成する

分類Dev

空のデータスペースを削除し、グループ化された棒グラフで均一な棒幅を維持します。ggplot2でファセットグリッドを使用する

分類Dev

列ごとにグループ化されていないインデックスを使用したパンダのグループ化

分類Dev

マルチインデックスのグループ化されたパンダデータフレームをフィルタリングする

分類Dev

グーグルマップカスタマイズされたピン

分類Dev

パンダを使用してデータフレームから(グループ化された)棒グラフをプロットする方法

分類Dev

「この Intel 汎用グラフィック ドライバーをインストールすると、コンピューター メーカー (OEM) からカスタマイズされたドライバーが上書きされます」

分類Dev

クラスター化された縦棒グラフと複数の線マーカープロットをExcel2010で組み合わせる

分類Dev

D3.jsスタックからグループ化された棒グラフの例で、変更されたLeeByronのテストアルゴリズムジェネレーターを介してCSVを渡す

分類Dev

d3v4をCSVからグループ化された棒グラフにスタック

分類Dev

マップ/フィルタリングされた無限リストにインデックスを付けると、インデックスの前のすべての要素にマップ/フィルター機能が適用されますか?

分類Dev

パンダプロットインターフェイスを介したカラーバー付きのグループ化された散布図

分類Dev

グループ化されたプロット内とサブグループ化されていないプロット内の棒グラフをスタックします

分類Dev

データフレームを反復処理し、Pandas GroupBy.nuniqueを使用して列をグループ化し、グループ化されたデータフレーム列を複数の.xlsxファイルにエクスポートします

分類Dev

さまざまな線のスタイルとマーカーを使用したggplot折れ線グラフ

Related 関連記事

  1. 1

    行インデックスでグループ化された棒グラフ

  2. 2

    マルチインデックスのグループ化された棒グラフ

  3. 3

    複数のx軸ggplot2またはカスタマイズされたラベルをスタック棒グラフに追加します

  4. 4

    nouisliderのスライダーを使用してLeaflet.jsでクラスター化されたマーカーをフィルタリングする方法

  5. 5

    surefireプラグインを使用してカスタマイズされたフォルダー構造でテストを実行する方法

  6. 6

    Matlab-グループ化された棒グラフの日時値でxaxisをカスタマイズする方法は?

  7. 7

    グループ化された色をラベルとして持つmatplotlib相関行列ヒートマップ

  8. 8

    d3 json ファイルを使用したツールチップ付きのレスポンシブなグループ化された棒グラフ

  9. 9

    プラグイン/拡張機能を使用してカスタマイズされたビルドのMavenベストプラクティス?

  10. 10

    年と月でグループ化されたデータに欠落している月の行を作成します(マルチインデックス)

  11. 11

    simple_form gemを使用して作成されたデバイスのログインフォームとサインアップフォームをカスタマイズするにはどうすればよいですか?

  12. 12

    カスタマイズされたスタイルをサポートするVimフォーマッタープラグインはありますか?

  13. 13

    pandasとxlsxwriterライブラリを使用したクラスター化されたグラフの調整

  14. 14

    Python:指定された列を使用してx軸を持つパンダデータフレームの棒グラフをプロットします

  15. 15

    Rを使用して2つのグループのカスタマイズされた森林プロットを作成する

  16. 16

    空のデータスペースを削除し、グループ化された棒グラフで均一な棒幅を維持します。ggplot2でファセットグリッドを使用する

  17. 17

    列ごとにグループ化されていないインデックスを使用したパンダのグループ化

  18. 18

    マルチインデックスのグループ化されたパンダデータフレームをフィルタリングする

  19. 19

    グーグルマップカスタマイズされたピン

  20. 20

    パンダを使用してデータフレームから(グループ化された)棒グラフをプロットする方法

  21. 21

    「この Intel 汎用グラフィック ドライバーをインストールすると、コンピューター メーカー (OEM) からカスタマイズされたドライバーが上書きされます」

  22. 22

    クラスター化された縦棒グラフと複数の線マーカープロットをExcel2010で組み合わせる

  23. 23

    D3.jsスタックからグループ化された棒グラフの例で、変更されたLeeByronのテストアルゴリズムジェネレーターを介してCSVを渡す

  24. 24

    d3v4をCSVからグループ化された棒グラフにスタック

  25. 25

    マップ/フィルタリングされた無限リストにインデックスを付けると、インデックスの前のすべての要素にマップ/フィルター機能が適用されますか?

  26. 26

    パンダプロットインターフェイスを介したカラーバー付きのグループ化された散布図

  27. 27

    グループ化されたプロット内とサブグループ化されていないプロット内の棒グラフをスタックします

  28. 28

    データフレームを反復処理し、Pandas GroupBy.nuniqueを使用して列をグループ化し、グループ化されたデータフレーム列を複数の.xlsxファイルにエクスポートします

  29. 29

    さまざまな線のスタイルとマーカーを使用したggplot折れ線グラフ

ホットタグ

アーカイブ