Python Seaborn lineplot自定义hue调色板不生效问题求助
问题原因分析
- 传入
palette参数的值无效:sns.set_palette()是用于修改Seaborn全局绘图调色板的方法,本身没有返回值(返回None),你将该方法的调用结果直接传给palette参数,等于没有指定有效调色板,Seaborn会自动 fallback 到默认hue调色板。 - 调色板配置逻辑错误:你不需要在
palette参数内嵌套全局调色板设置方法,两种配置逻辑二选一即可。
正确实现方案
方案1:先设置全局调色板,绘图时无需传palette参数
%matplotlib inline import seaborn as sns colors = ["#ff4c8b", "#00d8d5", '#f7f7f7'] # 先完成全局配置 sns.set_palette(sns.color_palette(colors)) sns.set_style(rc={'axes.facecolor':'black','figure.facecolor':'black','axes.grid' : False}) # 直接绘图即可自动使用全局调色板 s = sns.lineplot(data=data, x="timestamp", y="close.quote", hue='contract_ticker_symbol')
方案2:不修改全局配置,直接给palette参数传自定义颜色
%matplotlib inline import seaborn as sns colors = ["#ff4c8b", "#00d8d5", '#f7f7f7'] sns.set_style(rc={'axes.facecolor':'black','figure.facecolor':'black','axes.grid' : False}) # 直接传入颜色列表或sns.color_palette(colors)的结果均可 s = sns.lineplot(data=data, x="timestamp", y="close.quote", palette=colors, hue='contract_ticker_symbol')
注意事项
请确保数据中contract_ticker_symbol字段的唯一值数量刚好为3,和你定义的颜色数量对应。如果唯一值数量大于3,Seaborn会在你给出的颜色基础上自动插值生成额外颜色;如果小于3,会自动取你定义的前N个颜色匹配。
内容的提问来源于stack exchange,提问作者Dude
相关产品推荐
相关产品推荐

