绘制带分组类别重叠的Pandas DataFrame图表,查看最高得分类别
按类别重叠可视化Pandas DataFrame,快速找出高分类别
没问题!我来帮你搞定这个需求——把你的DataFrame按类别做重叠绘图,不同类别用不同颜色,还能一眼看出哪个类别得分最高。先从整理数据开始,再给你两种实用的实现方案:
第一步:先把你的DataFrame处理好
你给的原始代码里有几个小细节需要调整:比如得分列是字符串类型,日期列也需要转成datetime格式,还有最后一行的['...']得去掉。修正后的代码如下:
import pandas as pd # 构造正确的DataFrame df = pd.DataFrame( [ ['101', '2018-03-29', 'Smooth', '9.0'], ['102', '2018-03-29', 'Hard', '1.0'], ['103', '2018-03-30', 'Narrow', '1.1'], ['104', '2018-04-30', 'Sharp', '2.0'], ['105', '2018-04-21', 'Narrow', '2.2'] ], columns=['ID', 'Date', 'Category', 'Score'] ) # 转换数据类型:日期转datetime,得分转数值 df['Date'] = pd.to_datetime(df['Date']) df['Score'] = df['Score'].astype(float)
方法1:用Matplotlib手动控制绘图(灵活度高)
如果你想自定义每个类别的颜色,用Matplotlib是最佳选择。我们用散点图来重叠显示不同类别的数据,设置透明度避免点重叠看不清:
import matplotlib.pyplot as plt # 获取所有唯一类别 categories = df['Category'].unique() # 自定义颜色(你可以换成自己喜欢的配色) colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'] plt.figure(figsize=(10,6)) # 遍历每个类别,绘制散点图 for cat, color in zip(categories, colors): cat_data = df[df['Category'] == cat] plt.scatter(cat_data['Date'], cat_data['Score'], label=cat, color=color, s=80, alpha=0.7) # 添加图表细节 plt.xlabel('日期') plt.ylabel('得分') plt.title('各类别得分分布(重叠显示)') plt.legend(title='类别') plt.grid(True, alpha=0.3) plt.xticks(rotation=45) # 旋转日期标签避免重叠 plt.tight_layout() plt.show()
如果你的数据是时间序列的连续值,把scatter换成plot就能改成折线图,同样支持重叠显示。
方法2:用Seaborn快速实现(代码简洁)
Seaborn会自动给不同类别分配颜色,代码更短,适合快速出图:
import seaborn as sns plt.figure(figsize=(10,6)) # 用hue参数指定按类别区分颜色 sns.scatterplot(data=df, x='Date', y='Score', hue='Category', s=80, alpha=0.7) # 同样添加图表细节 plt.xlabel('日期') plt.ylabel('得分') plt.title('各类别得分分布(重叠显示)') plt.legend(title='类别') plt.grid(True, alpha=0.3) plt.xticks(rotation=45) plt.tight_layout() plt.show()
额外补充:快速对比每个类别的最高分
如果想更直接看出哪个类别得分最高,可以加一个条形图展示每个类别的最高分:
# 计算每个类别的最高分 max_scores = df.groupby('Category')['Score'].max().reset_index() plt.figure(figsize=(8,5)) sns.barplot(data=max_scores, x='Category', y='Score', palette='viridis') plt.xlabel('类别') plt.ylabel('最高分') plt.title('各类别最高分对比') plt.show()
这样就能一眼看到Smooth类别得分最高啦!
内容的提问来源于stack exchange,提问作者Masterbuilder
相关产品推荐
相关产品推荐

