Seaborn 调色板不适用于线图

新手上路,请多包涵

我在为线图自定义颜色时遇到了一些麻烦。我想用顺序调色板显示一组光谱。参数“palette=“blues” 工作正常,但不接受任何适当的颜色列表(如“Blues_d”),其中不包含任何明亮的颜色。

这是一个代表性的图表,显示了我的情节的样子

您可以在下面看到我正在使用的代码。

 color = (sns.dark_palette("purple"))
sns.set()

ax = sns.lineplot(x="Wavelength", y="Absorption", hue="t (min)", lw=1, data=df1, palette=color, legend="brief")

问题是,我收到以下错误:

ValueError:调色板列表中的颜色数量错误。

所以问题是:如何使用 lineplot 函数并使用蓝色、红色或任何不包含任何亮色的连续调色板?

我使用的是 pandas 版本 0.23.3、matplotlib 版本 2.2.2 和 seaborn 版本 0.9.0

原文由 Joscha Kruse 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 613
2 个回答

由于您在 hue 选项中提到了 t (min) 列,因此您需要知道该列的唯一值总数。

假设列中有 5 个唯一值。因此,您可以将数字设置为 n_colors 选项 sns.color_palette

 ax = sns.lineplot(x="Wavelength",
                  y="Absorption",
                  hue="t (min)",
                  lw=1,
                  data=df1,
                  palette=sns.color_palette('coolwarm', n_colors=5),
                  legend="brief")

原文由 Hakan Özler 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果通过在 sns.color_palette 中将“as_cmap”参数设置为 True 将调色板设置为颜色映射,则无需担心颜色计数:

 ax = sns.lineplot(x="Wavelength",
                      y="Absorption",
                      hue="t (min)",
                      lw=1,
                      data=df1,
                      palette=sns.color_palette('coolwarm', as_cmap = True),
                      legend="brief")

原文由 PeJota 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题