現在、公式 API ドキュメントでは棒グラフのソース コードの例のみが提供されています。プラットフォームが忙しすぎてドキュメントを書く時間がないのかもしれません。
from matplotlib import pyplot as plt import pandas as pd import pynimate as nim df = pd.DataFrame( { "time": ["1960-01-01", "1961-01-01", "1962-01-01"], "Afghanistan": [1, 2, 3], "Angola": [2, 3, 4], "Albania": [1, 2, 5], "USA": [5, 3, 4], "Argentina": [1, 4, 5], } ).set_index("time") cnv = nim.Canvas() bar = nim.Barplot(df, "%Y-%m-%d", "2d") bar.set_time(callback=lambda i, datafier: datafier.data.index[i].strftime("%b, %Y")) cnv.add_plot(bar) cnv.animate() plt.show()
pip を直接使用して pynimate モジュールをインストールします。このモジュールは Python バージョン 3.9 以降を直接サポートしており、各ミラー ステーションによって提供される必要があることに注意してください。
pip install pynimate pip install matplotlib pip install pandas
インストールが完了した後、現在の .py モジュールを直接起動すると、次の動的な棒グラフの効果が表示されます。
pynimate は他の Python 可視化モジュールと比較して、動的グラフィックスの実行過程を Gif 形式の動的画像として直接保存できる点で優れています。
cnv.save("file", 24, "gif")
さらに、pynimate モジュールの作成者は、参考のためにカスタマイズされた方法で視覚的な動的グラフィックスをセットアップする方法も提供しています。
from matplotlib import pyplot as plt import numpy as np import pandas as pd import os dir_path = os.path.dirname(os.path.realpath(__file__)) import pynimate as nim def post_update(ax, i, datafier, bar_attr): ax.spines["top"].set_visible(False) ax.spines["right"].set_visible(False) ax.spines["bottom"].set_visible(False) ax.spines["left"].set_visible(False) ax.set_facecolor("#001219") for bar, x, y in zip( bar_attr.top_bars, bar_attr.bar_length, bar_attr.bar_rank, ): ax.text( x - 0.3, y, datafier.col_var.loc[bar, "continent"], ha="right", color="k", size=12, ) df = pd.read_csv(dir_path + "/data/sample.csv").set_index("time") col = pd.DataFrame( { "columns": ["Afghanistan", "Angola", "Albania", "USA", "Argentina"], "continent": ["Asia", "Africa", "Europe", "N America", "S America"], } ).set_index("columns") bar_cols = { "Afghanistan": "#2a9d8f", "Angola": "#e9c46a", "Albania": "#e76f51", "USA": "#a7c957", "Argentina": "#e5989b", } cnv = nim.Canvas(figsize=(12.8, 7.2), facecolor="#001219") bar = nim.Barplot( df, "%Y-%m-%d", "3d", post_update=post_update, rounded_edges=True, grid=False ) bar.add_var(col_var=col) bar.set_bar_color(bar_cols) bar.set_title("Sample Title", color="w", weight=600) bar.set_xlabel("xlabel", color="w") bar.set_time( callback=lambda i, datafier: datafier.data.index[i].strftime("%b, %Y"), color="w" ) bar.set_text( "sum", callback=lambda i, datafier: f"Total :{np.round(datafier.data.iloc[i].sum(),2)}", size=20, x=0.72, y=0.20, color="w", ) bar.set_bar_annots(color="w", size=13) bar.set_xticks(colors="w", length=0, labelsize=13) bar.set_yticks(colors="w", labelsize=13) bar.set_bar_border_props( edge_color="black", pad=0.1, mutation_aspect=1, radius=0.2, mutation_scale=0.6 ) cnv.add_plot(bar) cnv.animate() plt.show()
カスタマイズによって実現される動的な棒グラフの効果は、よりクールであり、開発者がより自由にプレイできるようになりました。結果を以下に示します。
以上がPython を使用して動的な棒グラフを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。