Pyecharts 绘制各种统计图的案例
基础使用
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Pie, Scatter
from pyecharts.faker import Faker
# 柱状图示例
def bar_chart():
x_data = Faker.choose()
y_data = Faker.values()
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis("数据", y_data)
.set_global_opts(title_opts=opts.TitleOpts(title="柱状图示例"))
)
return bar
# 折线图示例
def line_chart():
x_data = Faker.choose()
y_data1 = Faker.values()
y_data2 = Faker.values()
line = (
Line()
.add_xaxis(x_data)
.add_yaxis("数据1", y_data1)
.add_yaxis("数据2", y_data2)
.set_global_opts(title_opts=opts.TitleOpts(title="折线图示例"))
)
return line
# 饼图示例
def pie_chart():
data_pair = [(Faker.choose(), Faker.values()) for _ in range(5)]
pie = (
Pie()
.add("", data_pair)
.set_global_opts(title_opts=opts.TitleOpts(title="饼图示例"))
)
return pie
# 散点图示例
def scatter_chart():
data = [(Faker.random_int(min_value=0, max_value=100), Faker.random_int(min_value=0, max_value=100)) for _ in range(50)]
scatter = (
Scatter()
.add_xaxis([x for x, _ in data])
.add_yaxis("", [y for _, y in data])
.set_global_opts(title_opts=opts.TitleOpts(title="散点图示例"))
)
return scatter
# 调用各种统计图的函数,生成图表
bar = bar_chart()
line = line_chart()
pie = pie_chart()
scatter = scatter_chart()
# 将图表渲染为 HTML 文件
bar.render("./charts/bar_chart.html")
line.render("./charts/line_chart.html")
pie.render("./charts/pie_chart.html")
scatter.render("./charts/scatter_chart.html")
以上代码定义了几个示例函数来生成不同类型的统计图:柱状图 bar_chart()
、折线图 line_chart()
、饼图 pie_chart()
和散点图 scatter_chart()
。分别使用 Pyecharts 提供的相应类来构建图表对象,并设置相关的数据和样式。最后,调用 render()
方法将图表渲染为 HTML 文件,保存在指定路径下。
请确保已安装 Pyecharts 库和相关依赖,并根据需要修改文件保存路径和其他图表的配置项。运行代码后,将生成相应的 HTML 文件,可通过浏览器打开查看绘制的各种统计图。
难度提高
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Pie, Scatter
from pyecharts.faker import Faker
# 绘制柱状图
def bar_chart(x_data, y_data, title):
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis("数据", y_data)
.set_global_opts(title_opts=opts.TitleOpts(title=title))
)
return bar
# 绘制折线图
def line_chart(x_data, y_data_list, legend, title):
line = (
Line()
.add_xaxis(x_data)
.set_global_opts(title_opts=opts.TitleOpts(title=title))
)
for y_data in y_data_list:
line.add_yaxis(legend, y_data)
return line
# 绘制饼图
def pie_chart(data_pair, title):
pie = (
Pie()
.add("", data_pair)
.set_global_opts(title_opts=opts.TitleOpts(title=title))
)
return pie
# 绘制散点图
def scatter_chart(data, title):
scatter = (
Scatter()
.add_xaxis([x for x, _ in data])
.add_yaxis("", [y for _, y in data])
.set_global_opts(title_opts=opts.TitleOpts(title=title))
)
return scatter
# 用户自定义参数
x_data = ["A", "B", "C", "D", "E"]
y_data = [10, 20, 30, 40, 50]
y_data_list = [[10, 20, 30, 40, 50], [5, 15, 25, 35, 45]]
legend = ["数据1", "数据2"]
data_pair = [("类别1", 30), ("类别2", 50), ("类别3", 20)]
data = [(Faker.random_int(min_value=0, max_value=100), Faker.random_int(min_value=0, max_value=100)) for _ in range(50)]
# 调用函数绘制统计图
bar = bar_chart(x_data, y_data, "柱状图示例")
line = line_chart(x_data, y_data_list, legend, "折线图示例")
pie = pie_chart(data_pair, "饼图示例")
scatter = scatter_chart(data, "散点图示例")
# 将图表渲染为 HTML 文件
bar.render("./charts/bar_chart.html")
line.render("./charts/line_chart.html")
pie.render("./charts/pie_chart.html")
scatter.render("./charts/scatter_chart.html")
在上述示例代码中,用户可以自定义以下参数:
x_data
:X 轴的数据列表。y_data
:Y 轴的数据列表(柱状图、折线图)。y_data_list
:多个 Y 轴的数据列表(折线图)。legend
:每个 Y 轴对应的图例列表(折线图)。data_pair
:饼图的数据列表,形式为(名称, 数值)
的元组。data
:散点图的数据列表,形式为(X 值, Y 值)
的元组。
根据用户提供的参数,调用相应的绘图函数生成定制化的统计图。最后使用 render()
方法将图表渲染为 HTML 文件保存。请根据需要修改和调整参数,并运行代码来重新绘制个性化的统计图。
实例演示
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Pie, Scatter
# 读取鸢尾花数据集
df = pd.read_csv('iris.csv')
# 统计不同类别的鸢尾花数量
species_count = df['species'].value_counts().reset_index()
# 创建柱状图对象并添加数据
bar = Bar()
bar.add_xaxis(species_count['index'].tolist())
bar.add_yaxis("总数", species_count['species'].tolist())
# 设置图表标题和其他样式
bar.set_global_opts(
title_opts=opts.TitleOpts(title="鸢尾花类别统计"),
xaxis_opts=opts.AxisOpts(name="类别"),
yaxis_opts=opts.AxisOpts(name="数量"),
)
# 渲染图表并保存为html文件
bar.render("iris_species_count.html")
# 创建散点图对象
scatter = Scatter()
# 添加数据点
scatter.add_xaxis(df['sepal length (cm)'])
scatter.add_yaxis('Sepal Width', df['sepal width (cm)'], symbol_size=10)
scatter.add_yaxis('Petal Length', df['petal length (cm)'], symbol_size=10)
scatter.add_yaxis('Petal Width', df['petal width (cm)'], symbol_size=10)
# 设置图表标题和其他样式
scatter.set_global_opts(
title_opts=opts.TitleOpts(title="鸢尾花数据分析"),
xaxis_opts=opts.AxisOpts(name="Sepal Length (cm)"),
yaxis_opts=opts.AxisOpts(name="Value"),
)
# 渲染图表并保存为html文件
scatter.render("iris_scatter.html")
# 创建折线图对象
line = Line()
# 添加数据点
line.add_xaxis(range(len(df)))
line.add_yaxis("Sepal Width", df['sepal width (cm)'], markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
line.add_yaxis("Petal Length", df['petal length (cm)'], markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
line.add_yaxis("Petal Width", df['petal width (cm)'], markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
# 设置图表标题和其他样式
line.set_global_opts(
title_opts=opts.TitleOpts(title="鸢尾花数据趋势分析"),
xaxis_opts=opts.AxisOpts(name="Index"),
yaxis_opts=opts.AxisOpts(name="Value"),
)
# 渲染图表并保存为html文件
line.render("iris_line.html")
# 创建饼图对象
pie = Pie()
# 统计各类别的鸢尾花数量
species_count = df['species'].value_counts().reset_index()
# 添加数据
pie.add("", [list(z) for z in zip(species_count['index'].tolist(), species_count['species'].tolist())])
# 设置图表标题和其他样式
pie.set_global_opts(
title_opts=opts.TitleOpts(title="鸢尾花类别占比分析"),
legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
)
# 渲染图表并保存为html文件
pie.render("iris_pie.html")
上述代码示例了对鸢尾花数据进行数据清晰化和绘制多种图表分析的方法,包括柱状图、散点图、折线图和饼图。你可以根据需要自行调整图表样式和其他参数。请注意,你需要提前准备好iris.csv
数据集文件。