Seaborn displot color参数无法更改图表颜色问题求助
解决Seaborn displot颜色不生效的问题
问题分析
调用displot时指定了color='red'但条形仍为默认颜色,核心原因是未明确指定绘图的目标数据列:当直接将pd.DataFrame(res)作为第一个参数传入时,displot会将其识别为data参数,但未指定x/y的情况下,seaborn会默认遍历DataFrame的所有列,此时color参数会被忽略(多列区分的配色逻辑优先级更高)。
可行解决方案
方案1:直接传入列表数据
无需将res转为DataFrame,直接传入一维列表,displot会自动将其作为x轴数据,color参数即可正常生效:
import numpy as np import pandas as pd import seaborn as sns sns.displot(res, color='red', edgecolor=None, binwidth=.5, binrange=(3, 19));
方案2:明确指定DataFrame的列
如果需要保留DataFrame格式,需通过x参数指定具体列名(由于pd.DataFrame(res)生成的是单列DataFrame,默认列名为0):
import numpy as np import pandas as pd import seaborn as sns df = pd.DataFrame(res) sns.displot(data=df, x=0, color='red', edgecolor=None, binwidth=.5, binrange=(3, 19));
补充说明
之前代码能正常工作可能是因为使用的Seaborn版本较低,旧版本的displot对未指定x/y的一维DataFrame处理逻辑不同,新版本则要求明确指定目标列才能让单个颜色参数生效。
内容的提问来源于stack exchange,提问作者Junho65
相关产品推荐
相关产品推荐

