示例1:
from pyecharts.charts import Bar # 柱状图
from pyecharts import options as optsfrom pyecharts.render import make_snapshotbar = 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()
运行结果: