最近,我在视频中看到了一个非常酷的散点图,其中显示了《辛普森一家》电视节目各季的收视率。我认为这将是一个非常酷的 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 种不同颜色的调色板,每隔几个季节图更改标记的形状和颜色。 这就是问题,我不知道该怎么做!请帮助我
您需要做的就是添加样式参数,就像我在下面所做的那样:
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()
图表将如下所示: