双 11 数据可视化:Pyecharts 与 Matplotlib 绘制商品价格对比及动态饼图
目录
- 掌握可视化交互
- 根据表格中商品信息,分别使用Pyecharts与Matplotlib库绘制柱形图。
- 使用 Pyecharts 绘制柱形图
- 使用 Matplotlib 绘制柱形图
- 解释
- 设置中文字体
- 静态饼图
- 动态饼图
- 使用 Pyecharts 绘制动态饼图
- 解释
- 总结
掌握可视化交互
- 了解基础:知道如何使用按钮、滑块等来改变图表。
- 使用工具:学会用Tableau、Power BI或D3.js等工具制作图表。
- 设计友好:确保图表既好看又好用。
进行数据可视化评估
-
检查质量:看图表是否准确、清晰、好用。
-
征求反馈:问别人怎么看你的图表,哪里可以改得更好。
-
持续优化:根据反馈调整图表,使之更完美。
了解数据可视化的价值
-
快速理解:图表让复杂的数字变得容易理解。
-
有效沟通:图表能帮助不同人更好地交流信息。
-
发现新知:通过图表可以看到数据中的趋势和规律。
-
增强记忆:图表比文字更容易让人记住信息。
Pyecharts与Matplotlib库交互功能对比
根据表格中商品信息,分别使用Pyecharts与Matplotlib库绘制柱形图。
商品名称 | 库存数量 | 原价(元) | 双十一价格(元) | 优惠方式 |
---|---|---|---|---|
zhangsan牌智能手表 | 100 | 670 | 603 | 满600减67 |
lisi牌蓝牙耳机 | 150 | 750 | 675 | 满700减75 |
使用 Pyecharts 绘制柱形图
from pyecharts import options as opts
from pyecharts.charts import Bar# 数据准备
products = ["zhangsan牌智能手表", "lisi牌蓝牙耳机"]
original_prices = [670, 750]
sale_prices = [603, 675]bar = (Bar().add_xaxis(products).add_yaxis("原价(元)", original_prices).add_yaxis("双十一价格(元)", sale_prices).set_global_opts(title_opts=opts.TitleOpts(title="商品价格对比"),xaxis_opts=opts.AxisOpts(name="商品名称"),yaxis_opts=opts.AxisOpts(name="价格(元)"),)
)
bar.render('D:/edge/product_prices.html') # 渲染成html文件
使用 Matplotlib 绘制柱形图
import matplotlib.pyplot as plt# 数据准备
products = ["zhangsan牌智能手表", "lisi牌蓝牙耳机"]
original_prices = [670, 750]
sale_prices = [603, 675]
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号# 将 range 转换为 list
ind = list(range(len(products))) # 这里做了转换
width = 0.35fig, ax = plt.subplots()
rects1 = ax.bar([i - width/2 for i in ind], original_prices, width, label='原价(元)')
rects2 = ax.bar([i + width/2 for i in ind], sale_prices, width, label='双十一价格(元)')ax.set_ylabel('价格(元)')
ax.set_title('商品价格对比')
ax.set_xticks(ind)
ax.set_xticklabels(products)
ax.legend()plt.show()
解释
-
Pyecharts 示例:
- 使用
Bar
类创建柱形图。 add_xaxis
方法设置横轴数据(商品名称)。add_yaxis
方法分别添加原价和双十一价格的数据。set_global_opts
方法设置图表的标题、横轴和纵轴的标签。- 最后使用
render
方法将图表保存为 HTML 文件。
- 使用
-
Matplotlib 示例:
- 使用
bar
方法创建柱形图。 ind
是每个商品的位置索引。width
是每个柱子的宽度。rects1
和rects2
分别代表原价和双十一价格的柱子。ax.set_xticks
和ax.set_xticklabels
设置横轴的标签。ax.legend
添加图例。- 最后使用
plt.show
显示图表。
- 使用
问题
在使用 Matplotlib 时,默认情况下可能不支持中文显示。为了正确显示中文,需要设置合适的字体。
设置中文字体
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 使用黑体 plt.rcParams[‘axes.unicode_minus’] = False # 正常显示负号
展示如何绘制静态饼图以及动态饼图(即随时间变化的饼图)。首先,我们从静态饼图开始。
静态饼图
``
import matplotlib.pyplot as plt# 数据准备
labels = ['产品A', '产品B', '产品C', '产品D']
sizes = [30, 20, 15, 35]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0) # 突出显示第一个部分plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.title('产品销售占比')
plt.show()
动态饼图
动态饼图通常用于展示数据随时间的变化情况。这里我们使用Pyecharts来实现一个简单的动态饼图示例。
使用 Pyecharts 绘制动态饼图
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeType# 数据准备
data_sequence = [[('产品A', 30), ('产品B', 20), ('产品C', 15), ('产品D', 35)],[('产品A', 25), ('产品B', 25), ('产品C', 20), ('产品D', 30)],[('产品A', 20), ('产品B', 30), ('产品C', 25), ('产品D', 25)],[('产品A', 15), ('产品B', 35), ('产品C', 30), ('产品D', 20)]
]frames = []
for i, data in enumerate(data_sequence):pie = (Pie().add("", data).set_global_opts(title_opts=opts.TitleOpts(title=f"产品销售占比 - 第{i+1}季度")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")))frames.append(pie)# 创建动态图
from pyecharts.charts import Timelinetimeline = (Timeline(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)).add_schema(play_interval=1000, is_auto_play=True, is_loop_play=False)
)for frame in frames:timeline.add(frame, f"第{frames.index(frame)+1}季度")timeline.render('D:/edge/dynamic_pie_chart.html') # 渲染成html文件
解释
-
Pyecharts 静态饼图:
- 使用
Pie
类创建饼图。 add
方法添加数据。set_global_opts
设置全局配置项,如标题。set_series_opts
设置系列配置项,如标签格式。render
方法将图表保存为 HTML 文件。
- 使用
-
Matplotlib 静态饼图:
- 使用
pie
方法创建饼图。 explode
参数突出显示某个部分。autopct
参数设置百分比显示格式。startangle
参数设置饼图的起始角度。plt.axis('equal')
确保饼图是圆形。plt.show()
显示图表。
- 使用
-
Pyecharts 动态饼图:
- 使用
Timeline
类创建时间线动画。 add_schema
方法设置时间线的基本配置,如播放间隔、自动播放等。- 循环添加每个季度的饼图到时间线中。
render
方法将时间线动画保存为 HTML 文件。
- 使用
总结
数据可视化的相关内容,包括掌握可视化交互、进行数据可视化评估和了解其价值。同时,通过商品价格对比展示了 Pyecharts 和 Matplotlib 库的柱形图绘制方法,并分别讲解了静态和动态饼图的绘制,特别是在 Matplotlib 中设置中文显示及 Pyecharts 动态饼图的复杂实现,为数据可视化提供了丰富的参考和实用的示例。