• 【已解决】Pyecharts折线图,只有坐标轴没有折线数据


    【已解决】Pyecharts折线图,只有坐标轴没有折线数据

    1、问题复现

    在做简单的数据通过 Pyecharts 生成折现图的时候,一直只有坐标轴没有折线数据,但是代码一直看不出问题,代码如下:

    import pandas as pd
    from pyecharts import options as opts
    from pyecharts.charts import Line
    
    data = pd.DataFrame(
        data=[[2011, 33.6], [2012, 33.0], [2013, 31.2], [2014, 31.0], [2015, 30.6], [2016, 30.1], [2017, 29.3],
              [2018, 28.4], [2019, 28.2], [2020, 30.2]], columns=['年份', '恩格尔系数'])
    
    line = (
        Line()
            .add_xaxis(data['年份'].tolist())
            .add_yaxis("恩格尔系数", data['恩格尔系数'].tolist(), label_opts=opts.LabelOpts(is_show=True))
            .set_global_opts(
            title_opts=opts.TitleOpts(title="2011年-2020年居民恩格尔系数(Pyecharts)"),
            toolbox_opts=opts.ToolboxOpts(),
            xaxis_opts=opts.AxisOpts(name="年份"),
            yaxis_opts=opts.AxisOpts(name="恩格尔系数"),
        )
    )
    
    line.render("恩格尔系数折线图(Pyecharts).html")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    2、原因

    在 Pyecharts 库中,x 轴数据类型对于确定数据的显示方式非常重要。

    Pyecharts 将 ‘年份’ 值视为数值。当 x 轴值是数值时,Pyecharts 会尝试创建一个连续轴,这可能不会正确显示离散的年度数据。

    当你使用 .add_xaxis(data['年份'].astype("str").tolist()) 时,你明确地将 ‘年份’ 列转换为字符串,然后传递给 x 轴。这有助于 Pyecharts 将 ‘年份’ 值视为离散类别,而不是数值。

    因此,通过将 ‘年份’ 转换为字符串,你告诉 Pyecharts 将它们视为类别,它会将数据显示为一条包含每年单独点的折线图。

    3、问题解决

    把 x 轴的数据转化为 str,问题就解决了,代码如下:

    import pandas as pd
    from pyecharts import options as opts
    from pyecharts.charts import Line
    
    data = pd.DataFrame(
        data=[[2011, 33.6], [2012, 33.0], [2013, 31.2], [2014, 31.0], [2015, 30.6], [2016, 30.1], [2017, 29.3],
              [2018, 28.4], [2019, 28.2], [2020, 30.2]], columns=['年份', '恩格尔系数'])
    
    line = (
        Line()
            .add_xaxis(data['年份'].astype("str").tolist())
            .add_yaxis("恩格尔系数", data['恩格尔系数'].tolist(), label_opts=opts.LabelOpts(is_show=True))
            .set_global_opts(
            title_opts=opts.TitleOpts(title="2011年-2020年居民恩格尔系数(Pyecharts)"),
            toolbox_opts=opts.ToolboxOpts(),
            xaxis_opts=opts.AxisOpts(name="年份"),
            yaxis_opts=opts.AxisOpts(name="恩格尔系数"),
        )
    )
    
    line.render("恩格尔系数折线图(Pyecharts).html")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

  • 相关阅读:
    Comparator::compare设定排序的升序 降序
    【C语言】用纯C来创建顺序表
    c#保留两位小数
    解析Vue3源码(二)——ref
    自动翻译 android/res/values/strings.xml
    前端框架的发展历程
    【算法基础】栈和队列及常见变种与使用,双栈、动态栈、栈的迭代器,双端队列、优先队列、并发队列、延迟队列的使用
    Java SDK性能测试代码1.1.0_2.3.4.8修改_20220824
    FPGA实现八位数字抢答器设计
    6.2 网络钓鱼攻击
  • 原文地址:https://blog.csdn.net/a6661314/article/details/133634976