Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie ein dynamisches Balkendiagramm mit Python

So erstellen Sie ein dynamisches Balkendiagramm mit Python

王林
王林nach vorne
2023-05-08 20:43:061937Durchsuche

Derzeit stellt die offizielle API-Dokumentation nur ein Quellcode-Beispiel für ein Balkendiagramm bereit. Möglicherweise ist die Plattform zu ausgelastet und hat keine Zeit, Dokumentation zu schreiben!

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()

Verwenden Sie pip direkt, um das Pynimate-Modul zu installieren. Es ist zu beachten, dass dieses Modul Python-Versionen 3.9 oder höher direkt unterstützt, die von jeder Spiegelstation bereitgestellt werden sollten.

pip install pynimate

pip install matplotlib

pip install pandas

Nachdem die Installation abgeschlossen ist, starten wir direkt das aktuelle .py-Modul und der folgende dynamische Balkendiagrammeffekt wird angezeigt.

So erstellen Sie ein dynamisches Balkendiagramm mit Python

Im Vergleich zu anderen Python-Visualisierungsmodulen zeichnet sich Pynimate dadurch aus, dass es den Ausführungsprozess dynamischer Grafiken direkt als dynamische Bilder im GIF-Format speichern kann.

cnv.save("file", 24, "gif")

Darüber hinaus bietet der Autor des Pynimate-Moduls auch eine Möglichkeit, visuelle dynamische Grafiken als Referenz individuell einzurichten.

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()

Der obige dynamische Balkendiagrammeffekt ist durch die Anpassung cooler und lässt Entwicklern mehr Spielraum. Die Ergebnisse werden unten angezeigt.

So erstellen Sie ein dynamisches Balkendiagramm mit Python

Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein dynamisches Balkendiagramm mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen