Python中的Seaborn散点图:调色板颜色太少

0 投票
1 回答
34 浏览
提问于 2025-04-12 09:07

最近我在一个视频里看到一个很酷的散点图,展示了《辛普森一家》这部电视剧各季的剧集评分。我觉得这会是一个很有趣的Python项目。下面是我看到的那个图:

视频中的图

我有一个数据表,里面记录了每一季、每一集的编号和评分。以下是我在脚本中生成的散点图:


### PLOT

plt.figure(figsize=(20, 8))

# scatterplot
sns.scatterplot(
    data=df, 
    x='Episode Number', 
    y='Rating', 
    hue='Season', 
    palette='tab10',
    s=50
)
    
# regression line
sns.regplot(
            data=df, 
            x='Episode Number', 
            y='Rating', 
            scatter=False,
            ci=None,
            line_kws={
                'color':'red', 
                'linestyle':'-', 
                'linewidth':3, 
                'alpha':0.3
            } 
                
)

这是输出结果:

我的图

你可以看到,对于每10季,标记的形状开始重复。我不想为35种不同的评分创建35种颜色的调色板。我更喜欢像视频中那样,每几季的图标形状和颜色都不一样。但是这就是我遇到的问题,我不知道该怎么做!请帮帮我。

1 个回答

0

你只需要像我下面这样添加样式参数就可以了:

import random as rd
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

#Make some sample data
episode=list(range(200))
season=[]
for k in range(20):
    for i in range(10):
        season.append(k)
rating=[]
for i in range(200):
    rating.append(rd.uniform(7.75, 8.25))

df=pd.DataFrame()
df['Episode Number']=episode
df['Rating']=rating
df['Season']=season

### PLOT

plt.figure(figsize=(20, 8))
plt.ylim(0,12)


# scatterplot
sns.scatterplot(
    data=df, 
    x='Episode Number', 
    y='Rating', 
    hue='Season',
    style='Season',
    palette='tab10',
    s=50
)
    
# regression line
sns.regplot(
            data=df, 
            x='Episode Number', 
            y='Rating', 
            scatter=False,
            ci=None,
            line_kws={
                'color':'red', 
                'linestyle':'-', 
                'linewidth':3, 
                'alpha':0.3
            } 
                
)

plt.legend(loc="lower left", ncol=2,title='Season')
plt.show()

这个图表看起来会是这样的:

在这里输入图片描述

撰写回答