Seaborn python在剧情上改变颜色系列

问题描述 投票:1回答:1

我试图改变Seaborn在图上使用的默认颜色方案,我只是想要一些简单的东西,例如他们文档中显示的HLS方案。然而他们的方法似乎不起作用,我只能假设这是由于我使用“色调”,但我无法弄清楚如何让它正常工作。这是当前代码,datain只是一个正确数字列数的文本文件,p为索引值:

import pandas as pd
import numpy as np
datain = np.loadtxt("data.txt")
df = pd.DataFrame(data = datain, columns = ["t","p","x","y","z"])
ax3 = sns.lineplot("t", "x", sns.color_palette("hls"), data = df[df['p'].isin([0,1,2,3,4])], hue = "p")
plt.show()

代码从文件中绘制出前几个数据集,如果我不包含sns.color_palette函数,它们会出现奇怪的紫色柔和选择,即seaborn似乎默认为。如果我包含它我得到错误:

TypeError:lineplot()为关键字参数'hue'获取了多个值

鉴于lineplot函数接受的格式,这看起来有点奇怪。

python matplotlib colors seaborn
1个回答
1
投票

第一件事:你需要坚持正确的语法。通过palette参数提供调色板。只是将它作为lineplot的第三个参数将其解释为lineplot的第三个参数恰好是hue

然后,您需要确保调色板具有与具有不同p值的颜色一样多的颜色。

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

datain = np.c_[np.arange(50),
               np.tile(range(5),10),
               np.linspace(0,1)+np.tile(range(5),10)/0.02]
df = pd.DataFrame(data = datain, columns = ["t","p","x"])

ax = sns.lineplot("t", "x", data = df, hue = "p", 
                  palette=sns.color_palette("hls", len(df['p'].unique())))

plt.show()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.