示例1:
from pyecharts.charts import Bar # 柱状图
from pyecharts import options as opts
from pyecharts.render import make_snapshot
bar = Bar()
bar.add_xaxis(['一月', '二月', '三月', '四月', '五月'])
bar.add_yaxis("销售额", [10, 20, 15, 25, 30])
# 配置图表
bar.set_global_opts(
title_opts=opts.TitleOpts(title="月度销售额柱状图"),
xaxis_opts=opts.AxisOpts(name="月份"),
yaxis_opts=opts.AxisOpts(name="销售额(万元)"),
)
# 渲染图表
bar.render("bar_chart.html")
运行结果:
如果点击销售额按钮,可动态展现柱状图。
示例2:
from pyecharts import options as opts
from pyecharts.charts import Bar
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType
# 准备数据
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
.add_xaxis(['衬衣', '羊毛衫', '西装', '裤子', '鞋子', '袜子'])
.add_yaxis('商家A', [5, 20, 40, 30, 80, 90])
.add_yaxis('商家B', [16, 2, 34, 34, 33, 50])
)
bar.set_global_opts(
title_opts=opts.TitleOpts(title="月度销售额柱状图", subtitle="副标题"),
xaxis_opts=opts.AxisOpts(name="月份"),
yaxis_opts=opts.AxisOpts(name="销售额(万元)"),
legend_opts=opts.LegendOpts(pos_left="center", pos_top="top"),
toolbox_opts=opts.ToolboxOpts(), # 工具箱配置项,用于添加一些交互工具,如保存为图片、数据视图等。
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
)
# 渲染图表
bar.render("themed_bar_chart图表2.html")
运行结果:
点击“商家A”或者“商家B”可单独展现,如图所示。
示例3:
import pandas as pd
from pyecharts.charts import Bar, Line
from pyecharts import options as opts
from pyecharts.globals import ThemeType
# 读取数据
data = pd.read_csv("E_business.csv", encoding='GBK')
# 转换日期列为日期类型
data['订单日期'] = pd.to_datetime(data['订单日期'])
# 提取2019~2022年的数据
data = data[(data['订单日期'].dt.year >= 2019) & (data['订单日期'].dt.year <= 2022)]
# 对数据按地区和产品类别进行分组,并对销售额和利润额求和
grouped_data = data.groupby(['区域']).agg({'销售额': 'sum', '利润额': 'sum'}).reset_index()
# 创建柱状图
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT, bg_color="#f0f8ff"))
.add_xaxis(grouped_data['区域'].tolist())
.add_yaxis("销售额", grouped_data['销售额'].tolist(), category_gap="50%")
.add_yaxis("利润额", grouped_data['利润额'].tolist(), category_gap="50%")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="历年各区域产品销售/利润对比图", pos_left='left'),
# xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45), name="区域"),
yaxis_opts=opts.AxisOpts(name="销售额和利润额"),
legend_opts=opts.LegendOpts(pos_left="center", pos_top="top"),
toolbox_opts=opts.ToolboxOpts(), # 工具箱配置项,用于添加一些交互工具,如保存为图片、数据视图等。
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
)
)
# 创建趋势线
line = (
Line()
.add_xaxis(grouped_data['区域'].tolist())
.add_yaxis("销售额趋势线", grouped_data['销售额'].tolist(), is_smooth=True, symbol='circle')
.add_yaxis("利润额趋势线", grouped_data['利润额'].tolist(), is_smooth=True, symbol='diamond')
)
# 合并柱状图和趋势线
bar.overlap(line)
# 渲染图表
bar.render("bar_line_chart图表3.html")
运行结果:
示例4:
import pandas as pd
import matplotlib.pyplot as plt
# import seaborn as sns
# 设置中文字体为SimHei
plt.rcParams['font.sans-serif'] = ['SimHei']
# 读取数据
data = pd.read_csv("E_business.csv", encoding='GBK')
# 转换日期列为日期类型
data['订单日期'] = pd.to_datetime(data['订单日期'])
# 提取2019~2022年的数据
data = data[(data['订单日期'].dt.year >= 2019) & (data['订单日期'].dt.year <= 2022)]
# # 绘制双柱状图
# plt.figure(figsize=(12, 8))
# sns.barplot(x='区域', y='销售额', hue='产品类别', data=data, palette='coolwarm', ci=None)
# sns.barplot(x='区域', y='利润额', hue='产品类别', data=data, palette='coolwarm', ci=None, alpha=0.5)
# 对数据按地区和产品类别进行分组,并对销售额和利润额求和
grouped_data = data.groupby(['区域']).agg({'销售额': 'sum', '利润额': 'sum'}).reset_index()
# 设置柱状图参数
bar_width = 0.35
index = grouped_data.index
# 绘制销售额柱状图
p1 = plt.bar(index, grouped_data['销售额'], bar_width, label='求和项:销售额', color='skyblue')
# 绘制利润额柱状图
p2 = plt.bar(index + bar_width, grouped_data['利润额'], bar_width, label='求和项:利润额', color='salmon')
# 显示图例
plt.legend(handles=[p1, p2], loc='upper right')
# 标记趋势线
plt.plot(index, grouped_data['销售额'], marker='o', linestyle='-', color='b')
plt.plot(index + bar_width, grouped_data['利润额'], marker='s', linestyle='--', color='r')
# 设置标题
plt.title('历年各区域产品销售/利润对比图', loc='left')
# 设置坐标轴标签
plt.xlabel('区域')
plt.ylabel('销售额和利润额')
# 显示图例
# plt.legend(title='求和项', title_fontsize='13', fontsize='11', loc='upper right')
# 填充背景色
plt.gca().set_facecolor('#f0f8ff')
# 设置刻度标签
plt.xticks(index + bar_width / 2, grouped_data['区域'])
plt.savefig('数据分析-图表4.png')
# 显示图表
plt.tight_layout()
plt.show()
运行结果: