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

Matplotlib折线图无法显示求助:三类年度费用折线图绘制失败

折线图无法显示的排查与解决

我有三类费用数据,想基于年份绘制3条折线的Matplotlib图表,但折线始终无法显示。以下是我的代码、输出和数据情况,请求协助排查:

实现代码

import numpy as np
import matplotlib.pyplot as plt
d = np.genfromtxt("Expenses.csv",
    delimiter=',',skip_header=1,
    dtype=[('year','i8'),('Type','U8'), ('Amount','i8')],missing_values=['na','-'],filling_values=[0])
print (d)
x_rent = d[d['Type']=='rental']['year']
y_rent = d[d['Type']=='rental']['Amount']
x_salary = d[d['Type']=='salaries']['year']
y_salary = d[d['Type']=='salaries']['Amount']
x_others = d[d['Type']=='others']['year']
y_others = d[d['Type']=='others']['Amount']
fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.plot(x_rent, y_rent, c='b',  label='rental')
ax1.plot(x_salary,y_salary, c='r', label='salaries')
ax1.plot(x_others,y_others, c='g', label='Others')
plt.title('Expenses incurred',fontsize=10)
plt.ylabel('Amount')
plt.xlabel('Years')
plt.legend(loc='upper right');

plt.show()

输出与数据情况

  • 输出:仅显示空白的图表框架,无任何折线
  • 数据样本:表格包含三列(Year、Type、Amount),Type列取值为Rental、Salaries、Others,对应不同年份的金额数据

问题排查与修正

核心问题是字符串匹配不精确:
代码中用小写的'rental'、'salaries'、'others'做筛选,但实际数据里的Type是首字母大写的格式,导致筛选不到任何数据,x、y数组为空,自然画不出折线。

修正方案(二选一)

  1. 直接匹配数据中的大小写:
# 修正筛选条件的大小写
x_rent = d[d['Type']=='Rental']['year']
y_rent = d[d['Type']=='Rental']['Amount']
x_salary = d[d['Type']=='Salaries']['year']
y_salary = d[d['Type']=='Salaries']['Amount']
x_others = d[d['Type']=='Others']['year']
y_others = d[d['Type']=='Others']['Amount']
  1. 统一转换为小写后匹配(避免大小写差异问题):
# 统一转为小写再筛选
mask_rent = d['Type'].astype(str).str.lower() == 'rental'
x_rent = d[mask_rent]['year']
y_rent = d[mask_rent]['Amount']

mask_salary = d['Type'].astype(str).str.lower() == 'salaries'
x_salary = d[mask_salary]['year']
y_salary = d[mask_salary]['Amount']

mask_others = d['Type'].astype(str).str.lower() == 'others'
x_others = d[mask_others]['year']
y_others = d[mask_others]['Amount']

额外验证建议

筛选后可以打印x、y数组确认是否有数据,比如print(x_rent, y_rent),若输出为空,说明筛选条件仍有问题;也可以用print(np.unique(d['Type']))查看所有Type的实际取值,排查拼写差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:35:11