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

代码报错求助:筛选指定州数据并绘制堆叠柱状图

筛选指定州并绘制堆叠柱状图代码修正

原代码存在的问题

  • 未对数据行进行州筛选,直接绘制全量数据
  • x= states['AR', 'MI', 'CA', 'WI'] 语法错误:states变量未定义,索引方式不符合Python规范
  • plt.xticks('states') 用法错误:xticks需传入刻度位置与对应标签,而非字符串
  • 颜色列表仅提供3种,但需对应4个百分比列(pct_clinton/pct_trump/pct_johnson/pct_other),数量不匹配
  • 缺少必要的库导入与图形显示步骤

修正后的代码

import pandas as pd
import matplotlib.pyplot as plt

# 假设数据已加载到df中,若未加载需补充读取逻辑:
# df = pd.read_csv("你的数据文件路径")

# 1. 筛选目标州数据,保留指定列并去除空值
target_states = ['AR', 'AL', 'CA']
df_filtered = df[df['state'].isin(target_states)][['state', 'pct_clinton', 'pct_trump', 'pct_johnson', 'pct_other']].dropna()

# 2. 将state设为索引,让x轴直接显示州名
df_filtered.set_index('state', inplace=True)

# 3. 绘制堆叠柱状图,颜色数量匹配4个数据列
ax = df_filtered.plot(kind='bar', stacked=True, color=['#e74c3c', '#3498db', '#2ecc71', '#95a5a6'], figsize=(8, 6))

# 4. 调整图表样式
plt.ylabel('得票百分比')
plt.title('指定州候选人得票占比')
plt.xticks(rotation=0)  # 保持州名标签水平,提升可读性

# 5. 调整图例位置,避免遮挡图表
ax.legend(['Clinton', 'Trump', 'Johnson', 'Other'], bbox_to_anchor=(1.05, 1), loc='upper left')

# 显示图形
plt.tight_layout()
plt.show()

代码说明

  • 用isin(target_states)精准筛选目标州的数据行
  • 将state设为索引后,pandas绘图会自动把索引作为x轴刻度标签,无需手动设置
  • 补充第4种颜色对应pct_other列,确保每个数据系列都有匹配的颜色
  • 通过xticks(rotation=0)让州名标签水平显示,解决标签重叠问题
  • 调整图例位置到图表外侧,避免遮挡堆叠柱体

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:57:33