双 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.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 示例

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

    8. 使用 bar 方法创建柱形图。
    9. ind 是每个商品的位置索引。
    10. width 是每个柱子的宽度。
    11. rects1rects2 分别代表原价和双十一价格的柱子。
    12. ax.set_xticksax.set_xticklabels 设置横轴的标签。
    13. ax.legend 添加图例。
    14. 最后使用 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 静态饼图

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

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

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

    总结

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

    作者:布说在见

    物联沃分享整理
    物联沃-IOTWORD物联网 » 双 11 数据可视化:Pyecharts 与 Matplotlib 绘制商品价格对比及动态饼图

    发表回复