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

如何在直方图显示年份?交易数-年份直方图绘制错误求助

问题分析与修改方案

你的代码存在几个核心问题:

  • 误用了直方图(hist):直方图是用来统计数据分布的,而你要展示年份与对应交易数量的对应关系,应该用柱状图(用横向柱状图barh匹配你要的轴方向)。
  • plt.plot([2006,2007,2008,2009,2010])仅传入了一组数值,Matplotlib默认将其作为y值,x轴自动生成0-4的索引,所以画出了直线,且完全没和交易数量关联。
  • 轴标签设置错误,你需要年份在y轴、交易数量在x轴,需要用横向柱状图来实现。

假设你的数据集d2包含year(年份)、flat_type(户型)、transactions(交易数量)三列,修改后的代码如下:

import matplotlib.pyplot as plt

# 筛选1 room的年份和对应交易数量
room1_data = d2[d2['flat_type'] == '1 room'][['year', 'transactions']]
# 按年份排序(可选,让图表更规整)
room1_data = room1_data.sort_values('year')

plt.figure(figsize=(10,6))
# 用横向柱状图,y轴是年份,x轴是交易数量
plt.barh(room1_data['year'], room1_data['transactions'], alpha=0.5, color='blue')

plt.title("1 room Transactions by Year", fontsize=15)
plt.xlabel('Number of transactions', fontsize=15)
plt.ylabel('Year', fontsize=15)
# 显示每个柱子的数值(可选,增强可读性)
for y, x in zip(room1_data['year'], room1_data['transactions']):
    plt.text(x + 5, y, str(x), va='center')

plt.tight_layout()
plt.show()

关键修改点说明:

  • 用barh替代hist:横向柱状图天然适合将分类(年份)放在y轴,数值(交易数量)放在x轴的需求。
  • 直接从数据集中关联年份和交易数量:确保每个年份对应正确的交易数值,而不是手动写死年份列表。
  • 修正轴标签:将ylabel设为年份,xlabel设为交易数量,符合你的需求。
  • 移除了多余的plt.plot语句:那条直线是错误操作导致的,完全不需要。

如果你的数据集里没有year列,需要先确认数据中存储年份的字段名称,替换代码中的year即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:23