Giới thiệu về pyecharts
Pyecharts là thư viện trực quan hóa dữ liệu của Python dựa trên ECharts, cho phép tạo các biểu đồ tương tác như biểu đồ cột, đường, tròn, bản đồ,... với API đơn giản.
- Tính năng nổi bật: hỗ trợ nhiều loại biểu đồ, tương tác đa dạng (zoom, drag), tích hợp với Pandas/Flask/Django
- Ưu điểm: dễ sử dụng, hỗ trợ định dạng dữ liệu CSV/JSON/Excel
Cài đặt thư viện
pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple/
Biểu đồ cột cơ bản (xử lý nhãn dài)
from pyecharts import options as opts
from pyecharts.charts import Bar
def create_rotated_bar():
bar = (
Bar()
.add_xaxis([f"Tháng {i}xxxxxxx" for i in range(1,7)])
.add_yaxis("Nhà hàng A", [10,20,30,40,50,40])
.add_yaxis("Nhà hàng B", [20,10,40,30,40,50])
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
title_opts=opts.TitleOpts(title="Biểu đồ cột xoay trục X", subtitle="Giải pháp nhãn dài")
)
)
return bar.render("rotated_bar.html")
Biểu đồ cột chồng (stacked bar)
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
def create_stacked_bar():
return (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("Nhóm 1", Faker.values(), stack="stack-1")
.add_yaxis("Nhóm 2", Faker.values(), stack="stack-1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="Biểu đồ cột chồng"))
.render("stacked_bar.html")
)
Biểu đồ kết hợp (column + pie)
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie, Timeline
from pyecharts.faker import Faker
def create_combo_chart():
bar = (
Bar()
.add_xaxis(Faker.cities)
.add_yaxis("Doanh thu", Faker.values())
.add_yaxis("Chi phí", [x*0.6 for x in Faker.values()])
)
pie = (
Pie()
.add("", [list(z) for z in zip(Faker.positions, Faker.values())])
.set_global_opts(title_opts=opts.TitleOpts(title="Phân bổ"))
)
return bar.overlap(pie).render("combo_chart.html")
Biểu đồ cột theo kiểu từ điển
from pyecharts.charts import Bar
from pyecharts.faker import Faker
def create_dict_config_bar():
return Bar({
"width": "80%",
"height": "500px",
"theme": "light"
})
.add_xaxis(Faker.animal)
.add_yaxis("Nhóm 1", Faker.values())
.add_yaxis("Nhóm 2", [x+5 for x in Faker.values()])
.set_global_opts(
title_opts={"text": "Biểu đồ cấu hình bằng từ điển"}
)
.render("dict_config_bar.html")