1 回答

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)
但是您可以调用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')
添加回答
举报