我正在尝试更改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()为关键字参数“色相”获得了多个值
鉴于lineplot函数接受的格式,这似乎有些奇怪。
答案 0 :(得分: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()