当前位置: 首页 > article >正文

双 11 数据可视化:Pyecharts 与 Matplotlib 绘制商品价格对比及动态饼图

目录

  • 掌握可视化交互
  • 根据表格中商品信息,分别使用Pyecharts与Matplotlib库绘制柱形图。
      • 使用 Pyecharts 绘制柱形图
      • 使用 Matplotlib 绘制柱形图
      • 解释
  • 设置中文字体
      • 静态饼图
      • 动态饼图
        • 使用 Pyecharts 绘制动态饼图
      • 解释
  • 总结

掌握可视化交互

  • 了解基础:知道如何使用按钮、滑块等来改变图表。
  • 使用工具:学会用Tableau、Power BI或D3.js等工具制作图表。
  • 设计友好:确保图表既好看又好用。

进行数据可视化评估

  • 检查质量:看图表是否准确、清晰、好用。

  • 征求反馈:问别人怎么看你的图表,哪里可以改得更好。

  • 持续优化:根据反馈调整图表,使之更完美。

    了解数据可视化的价值

  • 快速理解:图表让复杂的数字变得容易理解。

  • 有效沟通:图表能帮助不同人更好地交流信息。

  • 发现新知:通过图表可以看到数据中的趋势和规律。

  • 增强记忆:图表比文字更容易让人记住信息。


Pyecharts与Matplotlib库交互功能对比

根据表格中商品信息,分别使用Pyecharts与Matplotlib库绘制柱形图。

商品名称库存数量原价(元)双十一价格(元)优惠方式
zhangsan牌智能手表100670603满600减67
lisi牌蓝牙耳机150750675满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.35

fig, 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()

在这里插入图片描述

解释

  1. Pyecharts 示例

    • 使用 Bar 类创建柱形图。
    • add_xaxis 方法设置横轴数据(商品名称)。
    • add_yaxis 方法分别添加原价和双十一价格的数据。
    • set_global_opts 方法设置图表的标题、横轴和纵轴的标签。
    • 最后使用 render 方法将图表保存为 HTML 文件。
  2. Matplotlib 示例

    • 使用 bar 方法创建柱形图。
    • ind 是每个商品的位置索引。
    • width 是每个柱子的宽度。
    • rects1rects2 分别代表原价和双十一价格的柱子。
    • ax.set_xticksax.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 Timeline

timeline = (
    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文件

请添加图片描述

解释

  1. Pyecharts 静态饼图

    • 使用 Pie 类创建饼图。
    • add 方法添加数据。
    • set_global_opts 设置全局配置项,如标题。
    • set_series_opts 设置系列配置项,如标签格式。
    • render 方法将图表保存为 HTML 文件。
  2. Matplotlib 静态饼图

    • 使用 pie 方法创建饼图。
    • explode 参数突出显示某个部分。
    • autopct 参数设置百分比显示格式。
    • startangle 参数设置饼图的起始角度。
    • plt.axis('equal') 确保饼图是圆形。
    • plt.show() 显示图表。
  3. Pyecharts 动态饼图

    • 使用 Timeline 类创建时间线动画。
    • add_schema 方法设置时间线的基本配置,如播放间隔、自动播放等。
    • 循环添加每个季度的饼图到时间线中。
    • render 方法将时间线动画保存为 HTML 文件。

总结

数据可视化的相关内容,包括掌握可视化交互、进行数据可视化评估和了解其价值。同时,通过商品价格对比展示了 Pyecharts 和 Matplotlib 库的柱形图绘制方法,并分别讲解了静态和动态饼图的绘制,特别是在 Matplotlib 中设置中文显示及 Pyecharts 动态饼图的复杂实现,为数据可视化提供了丰富的参考和实用的示例。


http://www.kler.cn/a/393743.html

相关文章:

  • 三维测量与建模笔记 - 特征提取与匹配 - 4.2 梯度算子、Canny边缘检测、霍夫变换直线检测
  • WordPress HTTPS 配置问题解决方案
  • 32位、64位、x86与x64:深入解析计算机架构
  • Flink_DataStreamAPI_输出算子Sink
  • 01-Ajax入门与axios使用、URL知识
  • 论软件维护及其应用子问题
  • 企业一站式管理系统odoo的研究——系统搭建
  • BigDecimal为什么比int要好
  • 计算机网络(11)和流量控制补充
  • linux c/c++最高效的计时方法
  • Oracle 19c PDB克隆后出现Warning: PDB altered with errors受限模式处理
  • 花了36元给我的个人博客上了一道防御
  • 单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)
  • 【操作系统】守护进程
  • 多模态大模型(2)--BLIP
  • 基于springboot的物品回收系统
  • 动手学深度学习69 BERT预训练
  • vue3入门知识(二)
  • Linux 网络编程
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
  • Linux源码阅读笔记-V4L2框架基础介绍
  • 基于微信小程序的计算机实验室排课与查询系统
  • ubuntu22.04与ubuntu24.10使用Remmina远程桌面共享
  • android开发
  • 主动测量View的宽高
  • 隧道技术-tcp封装icmp出网