You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现用户输入数据生成柱状图及输入拆分问题求助

问题:柱状图无法正确加载用户输入数据

我尝试用用户输入的数据生成柱状图,已经能生成图表,但没法把实际数据正确插入,还存在不同项拆分的问题。

原代码

import matplotlib.pyplot as plt

definition = input('Definition of data set: ')
datay = input('Enter Y-axis data (Integer): ')
datax = input('Enter X-axis data (Term): ')
y = input('Y-axis label: ')
x = input('X-axis label: ')

data_num = datay.split()
datalist = [round(float(a)) for a in data_num]

min_val = min(datalist)
max_val = max(datalist)

left_coordinates=[min_val, max_val]
heights= (datay)
bar_labels= [datax]
plt.bar(left_coordinates,heights,tick_label=bar_labels,width=0.6,color=['red','black'])
plt.xlabel(x)
plt.ylabel(y)
plt.title(definition)
plt.show()

输入示例

Definition of data set: Amount of ants on different types of food
Enter Y-axis data (Integer): 4 5 10
Enter X-axis data (Term): apple mango ice-cream
Y-axis label: Amount of ants
X-axis label: Type of food

问题分析

原代码存在三个核心错误:

  • left_coordinates错误使用了Y轴数据的最小/最大值作为柱子位置,完全不符合柱状图的X轴定位逻辑
  • heights直接传入原始的Y轴输入字符串,没有使用转换后的数值列表datalist
  • bar_labels未拆分X轴输入的多个标签,把整串文本当成了单个标签

修正后的代码

import matplotlib.pyplot as plt

definition = input('Definition of data set: ')
datay = input('Enter Y-axis data (Integer): ')
datax = input('Enter X-axis data (Term): ')
y_label = input('Y-axis label: ')
x_label = input('X-axis label: ')

# 拆分并转换Y轴数据为整数列表
y_data = [int(num) for num in datay.split()]
# 拆分X轴标签为列表
x_labels = datax.split()

# 校验X/Y数据长度是否匹配
if len(y_data) != len(x_labels):
    print("错误:X轴标签和Y轴数据数量不匹配")
else:
    # 用X轴标签对应每个柱子的位置与标签,设置柱子样式
    plt.bar(x_labels, y_data, width=0.6, color=['red', 'orange', 'blue'])
    plt.xlabel(x_label)
    plt.ylabel(y_label)
    plt.title(definition)
    plt.show()

修正说明

  1. 将X轴输入字符串拆分为独立标签列表x_labels,每个标签对应一个柱子
  2. 使用转换后的数值列表y_data作为柱子高度,确保数据正确加载
  3. 用x_labels直接作为plt.bar的X轴参数,自动匹配每个柱子的位置与标签
  4. 新增数据长度校验,避免输入不匹配导致的异常

内容的提问来源于stack exchange,提问作者MYW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:15:37