Python Seaborn多线图,只有一条线是彩色的

Python Seaborn多线图,只有一条线是彩色的,python,matplotlib,seaborn,linechart,Python,Matplotlib,Seaborn,Linechart,我正在尝试使用sns绘制一个多线图,但只将美国线保持为红色,而其他国家则保持为灰色 这就是我到目前为止所做的: df = px.data.gapminder() sns.lineplot(x = 'year', y = 'pop', data = df, hue = 'country', color = 'grey', dashes = False, legend = False) 但这不会将线条更改为灰色。我在想,在这之后,我可以自己添加红色的US线条。…您可以使用调色板参数将线条的自定义颜

我正在尝试使用sns绘制一个多线图,但只将美国线保持为红色,而其他国家则保持为灰色

这就是我到目前为止所做的:

df = px.data.gapminder()
sns.lineplot(x = 'year', y = 'pop', data = df, hue = 'country', color = 'grey', dashes = False, legend = False)

但这不会将线条更改为灰色。我在想,在这之后,我可以自己添加红色的US线条。…

您可以使用
调色板
参数将线条的自定义颜色传递给
sns.lineplot
,例如:

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
df=pd.DataFrame({'year':[2018、2019、2020、2018、2019、2020、2018、2019、2020、],
"流行音乐:[325,328,332,125,127,132,36,37,38],,
“国家”:[“美国”、“美国”、“美国”、“墨西哥”、“墨西哥”,
“加拿大”、“加拿大”、“加拿大”]})
颜色=[“红色”、“灰色”、“灰色”]
sns.lineplot(x='year',y='pop',data=df,hue='country',
调色板=颜色,图例=假)
plt.ylim(0350)
plt.xticks([2018、2019、2020]);

尽管有一个传说仍然有用,所以你也可以考虑修改alpha值(下面元组中的最后值)来强调USA.

red=(1,0,0,1)
绿色=(0,0.5,0,0.2)
蓝色=(0,0,1,0.2)
颜色=[红、绿、蓝]
sns.lineplot(x='year',y='pop',data=df,hue='country',
调色板=颜色)
plt.ylim(0350)
plt.xticks([2018、2019、2020]);

您可以使用
调色板
参数将线的自定义颜色传递到
sns.lineplot
,例如:

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
df=pd.DataFrame({'year':[2018、2019、2020、2018、2019、2020、2018、2019、2020、],
"流行音乐:[325,328,332,125,127,132,36,37,38],,
“国家”:[“美国”、“美国”、“美国”、“墨西哥”、“墨西哥”,
“加拿大”、“加拿大”、“加拿大”]})
颜色=[“红色”、“灰色”、“灰色”]
sns.lineplot(x='year',y='pop',data=df,hue='country',
调色板=颜色,图例=假)
plt.ylim(0350)
plt.xticks([2018、2019、2020]);

尽管有一个传说仍然有用,所以你也可以考虑修改alpha值(下面元组中的最后值)来强调USA.

red=(1,0,0,1)
绿色=(0,0.5,0,0.2)
蓝色=(0,0,1,0.2)
颜色=[红、绿、蓝]
sns.lineplot(x='year',y='pop',data=df,hue='country',
调色板=颜色)
plt.ylim(0350)
plt.xticks([2018、2019、2020]);

您可以使用pandas groupby来绘制:

fig,ax=plt.subplots()
for c,d in df.groupby('country'):
    color = 'red' if c=='US' else 'grey'
    d.plot(x='year',y='pop', ax=ax, color=color)

ax.legend().remove()
输出:

也可以将特定调色板定义为字典:

palette = {c:'red' if c=='US' else 'grey' for c in df.country.unique()}

sns.lineplot(x='year', y='pop', data=df, hue='country', 
             palette=palette, legend=False)
输出:


您可以使用pandas groupby来绘制:

fig,ax=plt.subplots()
for c,d in df.groupby('country'):
    color = 'red' if c=='US' else 'grey'
    d.plot(x='year',y='pop', ax=ax, color=color)

ax.legend().remove()
输出:

也可以将特定调色板定义为字典:

palette = {c:'red' if c=='US' else 'grey' for c in df.country.unique()}

sns.lineplot(x='year', y='pop', data=df, hue='country', 
             palette=palette, legend=False)
输出:


由于您似乎对堆栈溢出还不熟悉,所以您应该阅读因为您对堆栈溢出还不熟悉,所以您应该阅读