为了账号安全,请及时绑定邮箱和手机立即绑定

改变seaborn情节线的颜色

改变seaborn情节线的颜色

牛魔王的故事 2022-06-28 15:17:16
我无法更改 seaborn 中二维线的颜色。我的情节中有两条线,我想为它们分配不同的颜色。sns.set(style="whitegrid")data = pd.DataFrame(result_prices, columns=['Size percentage increase'])data2 = pd.DataFrame(result_sizes, columns=['Size percentage increase'])sns_plot = sns.lineplot(data=data, color='red', linewidth=2.5)sns_plot = sns.lineplot(data=data2, linewidth=2.5)sns_plot.figure.savefig("size_percentage_increase.png")但color='red'不改变颜色,为什么呢?
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

您在这里有几个选择。您可以调整对color参数的使用,也可以使用palette参数。


palette

使用palette可以说是更清洁的方法。lineplot理想情况下,使用palette--with参数时,您只需调用一次hue:


np.random.seed(42)

y0 = pd.DataFrame(np.random.random(20), columns=['value'])

y1 = pd.DataFrame(np.random.random(20), columns=['value'])

y = pd.concat([y0, y1], axis=0, keys=['y0', 'y1']).reset_index()

y = y.rename(columns={'level_0': 'group', 'level_1': 'x'})


sns.lineplot(data=y, x='x', y='value', hue='group', palette=['r', 'g'], linewidth=2.5)

//img1.sycdn.imooc.com//62baab260001461404270285.jpg

但是您可以调用lineplot类似于您在帖子中所做的每一行:


sns.set(style="whitegrid")

data = pd.DataFrame(result_prices, columns=['Size percentage increase'])

data2 = pd.DataFrame(result_sizes, columns=['Size percentage increase'])

sns_plot = sns.lineplot(data=data, palette=['red'], linewidth=2.5)

sns_plot = sns.lineplot(data=data2, linewidth=2.5)

sns_plot.figure.savefig("size_percentage_increase.png")

color

使用该color参数似乎仅适用于 Series 对象。这在绘制单条线时最有用,而不是在绘图中为多条线着色时。


由于您的数据框似乎只有一列,因此您可以(A)将它们转换为 Series 对象或(B)在调用时定义x和参数。ylineplot


文档最后有一个例子。


A) 转换为系列

使用您的代码,它看起来像:


sns.set(style="whitegrid")

data = pd.Series(result_prices)

data2 = pd.Series(result_sizes)

sns_plot = sns.lineplot(data=data, color='red', linewidth=2.5)

sns_plot = sns.lineplot(data=data2, linewidth=2.5)

sns_plot.figure.savefig("size_percentage_increase.png")

作为一个最小的例子:


np.random.seed(42)

y0 = pd.DataFrame(np.random.random(20), columns=['value'])

y1 = pd.DataFrame(np.random.random(20), columns=['value'])

sns.lineplot(data=y0['value'], color='r')

sns.lineplot(data=y1['value'])

B) 定义x和y参数

sns.lineplot(data=y0, x=y0.index, y='value', color='r')

sns.lineplot(data=y1, x=y0.index, y='value')


查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信