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

如何使用Matplotlib绘制基于State与Production列的直方图(Python)

如何用Matplotlib绘制以State为x轴、产量为y轴的双变量图表

嘿,我来帮你搞定这个问题!先聊聊你现有代码里的几个小问题,再给你两种贴合需求的实现方式~

先看原代码的问题

你的代码里有几个容易导致报错或者不符合需求的地方:

  • 没正确导入Matplotlib:应该用import matplotlib.pyplot as plt,你直接用plot.figure会找不到这个对象
  • 错误使用了hist()方法:hist()是用来展示连续变量的频率分布的,而你的x轴是离散的分类变量(State),用它没法实现你要的“每个State对应一个产量值”的效果
  • 参数错误:hist()里的bin应该写成bins,而且你也没正确传入x轴的变量

针对你的数据,最适合的实现方式

你的数据里每个State只有一个产量值,这种场景下用柱状图比直方图更贴合需求(直方图更适合有多个数据点的分布展示)。下面是具体代码:

步骤1:先构造你的DataFrame(方便复现)

import pandas as pd

data = {
    'State': ['AB', 'BS', 'TS'],
    'Year': [2014, 2014, 2014],
    'Area': [20000, 35000, 20000],
    'production': [21674, 116074, 32678]
}
Pulse_yield = pd.DataFrame(data)

步骤2:用Matplotlib绘制柱状图

%matplotlib inline
import matplotlib.pyplot as plt

# 创建画布和轴对象
fig = plt.figure(figsize=(8, 6))  # 调整尺寸让图表更美观
ax = fig.gca()

# 提取x和y轴数据
states = Pulse_yield['State']
production = Pulse_yield['production']

# 绘制柱状图
ax.bar(states, production, color='#1f77b4')  # 可以自定义柱子颜色

# 设置图表标题和轴标签
ax.set_title('Yield in 2014', fontsize=14)
ax.set_xlabel('States', fontsize=12)
ax.set_ylabel('Production', fontsize=12)

# 显示图表
plt.show()

如果你的数据有多个产量点(想画真正的双变量直方图)

如果之后你的数据里每个State有多个产量记录(比如多年份的数据),可以用Seaborn来绘制不同State的产量分布直方图,示例如下:

模拟多数据点的数据集

data_multi = {
    'State': ['AB', 'AB', 'BS', 'BS', 'TS', 'TS'],
    'Year': [2014, 2015, 2014, 2015, 2014, 2015],
    'production': [21674, 23450, 116074, 120000, 32678, 35000]
}
df_multi = pd.DataFrame(data_multi)

用Seaborn绘制双变量直方图

import seaborn as sns

plt.figure(figsize=(8, 6))
# 绘制分State的产量分布直方图,multiple='dodge'让柱子分开显示
sns.histplot(data=df_multi, x='production', hue='State', bins=10, multiple='dodge', palette='viridis')

plt.title('Production Distribution by State', fontsize=14)
plt.xlabel('Production', fontsize=12)
plt.ylabel('Count of Records', fontsize=12)
plt.show()

这样就能清晰看到不同State的产量分布情况啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:52:33