我正在 seaborn 中制作多面线图,其中每个子网格有两条线,一条 DATA = 'fitted',另一条 DATA = 'original'。我希望它们以不同的颜色绘制。我试过将 Palette = 设置为我选择的调色板,但它们仍然打印为蓝色。如何选择每条线显示的颜色?
import seaborn as sns
import matplotlib.pyplot as plt
palette = sns.color_palette("hls", 2)
g = sns.FacetGrid(comboSites, col="SITE", hue="DATA", palette=palette, col_wrap=3)
g.map(sns.lineplot, "YEAR","NDVI", "SITE")
plt.show()
答案 0 :(得分:1)
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
comboSites = pd.DataFrame({"SITE": np.repeat(np.repeat(['AT02', 'BA01', 'BA02'], 2), 21),
"DATA": np.repeat(np.tile(['original', 'fitted'], 3), 21),
"YEAR": np.tile(np.arange(2000, 2021), 6),
"NDVI": np.random.randint(-200, 800, 6 * 21)})
palette = sns.color_palette("hls", 2)
seaborn v0.11.0
seaborn.relplot
而不是 seaborn.FacetGrid
。g = sns.relplot(data=comboSites, col="SITE", hue="DATA", palette=palette,
col_wrap=3, x='YEAR', y='NDVI', kind='line', height=3)
seaborn v0.11.0
之前您给 sns.lineplot
提供了三个参数。第一个将用于 x
('YEAR'),第二个用于 y
('NDVI'),第三个用于 hue
('SITE')。这样,就不会使用 FacetGrid
的色调。省略第三个参数将导致所需的情节。
g = sns.FacetGrid(comboSites, col="SITE", hue="DATA", palette=palette, col_wrap=3)
g.map(sns.lineplot, "YEAR", "NDVI")
plt.tight_layout()
plt.show()