在 Seaborn 线图中通过“色调”设置线条颜色

时间:2021-03-20 00:03:51

标签: python matplotlib seaborn

我正在 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()

enter image description here

1 个答案:

答案 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()

输出

facet grid with two lines