Y特奈特 2023-12-18 16:48 采纳率: 91.9%
浏览 7

python数据可视化


from pyecharts.charts import Line
import json

f = open("成绩单.txt", "r", encoding="UTF-8")
data_line = f.read()
data_json = json.loads(data_line)
# print(data_json)
print(data_json[0]['科目'])
x_list = []
for x_data in data_json[0]['科目']:
    x_list.append(x_data)
y_list = []
for y_data in data_json[0]['sorce']:
    y_list.append(y_data)
line = Line()
line.add_xaxis("科目",x_list)
line.add_yaxis("成绩",y_list)
line.render("成绩统计图.html")

[
    {
        "科目": "数学",
        "sorce": "100"
    },
    {
        "科目": "语文",
        "sorce": "99"
    },
    {
        "科目": "英语",
        "sorce": "98"
    }
]

为啥一直提示x轴那里需要两个,但是提供了三个

  • 写回答

1条回答 默认 最新

  • &春风有信 2023-12-18 18:52
    关注

    你的代码中,你试图将data_json[0]['科目']作为x轴的数据,而将data_json[0]['sorce']作为y轴的数据。从你给出的数据结构来看,data_json[0]['科目']是一个包含三个元素的列表,而data_json[0]['sorce']也是一个包含三个元素的列表。

    在你的代码中,你将data_json[0]['科目']的每一个元素都作为一个独立的系列添加到了图表中,这就是为什么你得到三个系列的原因。如果你想将data_json[0]['科目']中的每一个元素都作为x轴上的一个点,你需要确保每一个元素都与一个对应的y轴的值相对应。

    如果你的意图是绘制一个关于每个科目的成绩的线图,你应该这样做:

    from pyecharts.charts import Line
    import json
    
    f = open("成绩单.txt", "r", encoding="UTF-8")
    data_line = f.read()
    data_json = json.loads(data_line)
    
    x_list = []
    y_list = []
    for x_data in data_json[0]['科目']:
        x_list.append(x_data)
        y_list.append(data_json[0][x_data])
    
    line = Line()
    line.add_xaxis("科目", x_list)
    line.add_yaxis("成绩", y_list)
    line.render("成绩统计图.html")
    
    

    这样,对于每一个科目(如"数学"、"语文"、"英语"),你都会有一个对应的成绩作为y轴的值。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月18日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22