Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menjana carta bar dinamik menggunakan Python

Bagaimana untuk menjana carta bar dinamik menggunakan Python

王林
王林ke hadapan
2023-05-08 20:43:062054semak imbas

Pada masa ini, dokumentasi API rasmi hanya menyediakan contoh kod sumber carta bar Mungkin platform terlalu sibuk dan tidak mempunyai masa untuk menulis dokumentasi!

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

Gunakan pip terus untuk memasang modul pynimate Perlu diingat bahawa modul ini secara langsung menyokong python versi 3.9 atau lebih tinggi, yang harus disediakan oleh setiap stesen cermin.

pip install pynimate

pip install matplotlib

pip install pandas

Selepas pemasangan selesai, jika kami memulakan terus modul .py semasa, kesan carta bar dinamik berikut akan muncul.

Bagaimana untuk menjana carta bar dinamik menggunakan Python

Berbanding dengan modul visualisasi python yang lain, pynimate sangat baik kerana ia boleh menyimpan secara langsung proses pelaksanaan grafik dinamik sebagai gambar dinamik dalam format Gif.

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

Selain itu, pengarang modul pynimate juga menyediakan cara tersuai untuk menyediakan grafik dinamik visual untuk rujukan kami.

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

Kesan carta bar dinamik yang dicapai melalui penyesuaian adalah lebih keren, memberikan lebih banyak ruang untuk pembangun untuk bermain. Hasilnya ditunjukkan di bawah.

Bagaimana untuk menjana carta bar dinamik menggunakan Python

Atas ialah kandungan terperinci Bagaimana untuk menjana carta bar dinamik menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam