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

基于Pandas DataFrame绘制目标Matplotlib柱状图的技术求助

问题描述

数据集信息

我的电影数据集Pandas DataFrame示例(count字段代表单部电影计数):

yearOfReleasecount
19891
19901
19911
19921
19931

此前该数据集为Spark DataFrame,通过以下代码转换为Pandas DataFrame:

pandasDF = movies_DF.toPandas()
pandasDF.head()

图表对比

  • 当前生成的柱状图:当前柱状图
  • 目标柱状图样式:目标柱状图

当前代码

x = list(pandasDF[pandasDF['yearOfRelease'] >= '1990']['yearOfRelease'])
import matplotlib.pyplot as plt
plt.figure()
pd.value_counts(x).plot.bar(title="number of movies by year of release ")

plt.xlabel("yearOfRelease")
plt.ylabel("numOfMovies")
plt.show()

需求

请指导如何调整代码以生成目标样式的柱状图。


代码调整方案

直接修改代码如下,即可匹配目标图表样式:

import matplotlib.pyplot as plt
import pandas as pd

# 筛选1990年及以后的数据,保留原count字段
filtered_df = pandasDF[pandasDF['yearOfRelease'] >= '1990']

plt.figure()
# 基于原数据的年份和count绘制柱状图,保证年份顺序正确
plt.bar(filtered_df['yearOfRelease'], filtered_df['count'], color='#1f77b4')

# 配置标题和坐标轴标签,对齐目标图格式
plt.title('Number of Movies by Year of Release', pad=20, fontsize=12)
plt.xlabel('Year of Release', fontsize=10)
plt.ylabel('Number of Movies', fontsize=10)

# 给每个柱子添加顶部数值标签
for idx, val in enumerate(filtered_df['count']):
    plt.text(idx, val + 0.05, str(val), ha='center')

plt.tight_layout()
plt.show()

关键调整说明

  • 放弃pd.value_counts():原数据已自带count统计字段,直接使用可避免打乱年份排序
  • 改用plt.bar()原生绘制:比DataFrame内置的plot方法更灵活,便于自定义样式
  • 添加柱子顶部数值标签:匹配目标图的显示细节
  • 优化标题、标签的间距和字体,让图表布局更整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:02:34