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

Matplotlib绘制DataFrame:如何避免合并重复电影条目

解决重复电影名绘图被合并的问题

核心原因

当直接用pandas按电影名列绘图时,默认会将电影名视为分类变量自动去重合并,导致重复出现的电影仅显示一次,丢失了原DataFrame的行顺序和重复条目。

解决方案

方法1:以行索引为x轴,手动设置刻度标签

利用DataFrame的行位置索引作为x轴,再将电影名设置为x轴刻度标签,就能完整保留所有行的顺序(包括重复电影):

import matplotlib.pyplot as plt

# 假设你的DataFrame名为df,要绘制的数值列是'目标列'(如票房、评分等)
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['目标列'])

# 设置x轴刻度为电影名,旋转标签避免重叠
plt.xticks(ticks=df.index, labels=df['电影名'], rotation=45, ha='right')

plt.xlabel('电影')
plt.ylabel('对应数值')
plt.title('电影数据按原顺序绘制')
plt.tight_layout()
plt.show()

方法2:使用seaborn绘图并指定x为行索引

若用seaborn可视化,同样通过行索引绑定电影名标签,确保每个条目都被绘制:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
sns.lineplot(x=df.index, y='目标列', data=df, marker='o')

plt.xticks(ticks=df.index, labels=df['电影名'], rotation=45, ha='right')
plt.xlabel('电影')
plt.ylabel('对应数值')
plt.title('电影数据按原顺序绘制')
plt.tight_layout()
plt.show()

方法3:重置索引后使用连续索引

如果原DataFrame的索引不是连续数值,可先重置索引再绘图:

df_reset = df.reset_index(drop=True)

plt.figure(figsize=(12, 6))
plt.plot(df_reset.index, df_reset['目标列'])
plt.xticks(ticks=df_reset.index, labels=df_reset['电影名'], rotation=45, ha='right')

plt.xlabel('电影')
plt.ylabel('对应数值')
plt.title('电影数据按原顺序绘制')
plt.tight_layout()
plt.show()

关键提示

  • 不要直接将电影名列设为x轴(pandas会自动对分类变量去重)
  • 通过行位置索引关联电影名标签,才能完整保留原数据的所有行和顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:35:04