Python中Plotly Express箱线图隐藏须线异常值及调整色调
Plotly Express箱线图:移除须线/异常值 + 自定义分组颜色
一、移除须线和异常值
你已经通过boxpoints=False移除了异常值,要移除须线,只需在update_traces中添加showwhiskers=False参数即可:
fig = px.box(all_services, x="xvalue", y="yvalue", color="label", title="title") # 移除异常值+须线,保留分位数设置 fig.update_traces(quartilemethod="inclusive", boxpoints=False, showwhiskers=False) fig.show()
boxpoints=False:隐藏异常值点showwhiskers=False:隐藏箱线图的上下须线
二、同一标签同色,分类色调区分
假设你的数据中有一个category列(对应每个标签下的2个分类),可以通过颜色深浅变体实现需求:
步骤1:定义基础色与生成色调变体
使用Plotly内置的颜色调整工具,为每个标签生成基础色和浅色调(或深色调),对应两个分类:
import plotly.colors as pc import pandas as pd # 模拟你的数据结构(实际替换为你的真实数据) all_services = pd.DataFrame({ 'xvalue': ['Group1']*40 + ['Group2']*40 + ['Group3']*40, 'yvalue': list(range(20))*2 + list(range(10,30))*2 + list(range(5,25))*2, 'label': ['LabelA']*20 + ['LabelA']*20 + ['LabelB']*20 + ['LabelB']*20 + ['LabelC']*20 + ['LabelC']*20, 'category': ['Type1']*20 + ['Type2']*20 + ['Type1']*20 + ['Type2']*20 + ['Type1']*20 + ['Type2']*20 }) # 给每个标签分配基础色 base_colors = { 'LabelA': '#1f77b4', # 蓝色 'LabelB': '#ff7f0e', # 橙色 'LabelC': '#2ca02c' # 绿色 } # 生成颜色映射:同一标签下的两个分类用深浅不同的同色系 color_map = {} for label in base_colors: # 分类1用基础色 color_map[f"{label}_Type1"] = base_colors[label] # 分类2用浅色调(亮度调整为1.3,数值越大越亮) light_version = pc.adjust_lightness(base_colors[label], 1.3) color_map[f"{label}_Type2"] = light_version # 创建标签+分类的组合列,用于颜色映射 all_services['label_cat'] = all_services['label'] + '_' + all_services['category']
步骤2:绘制带自定义颜色的箱线图
将color参数指向组合列,并通过color_discrete_map指定颜色:
fig = px.box(all_services, x="xvalue", y="yvalue", color="label_cat", title="自定义分组颜色箱线图", color_discrete_map=color_map) # 移除须线和异常值 fig.update_traces(quartilemethod="inclusive", boxpoints=False, showwhiskers=False) fig.show()
这样同一标签下的两个分类会使用同色系的深浅色调,不同标签则用不同基础色,完全符合你的需求。
内容的提问来源于stack exchange,提问作者python_interest
相关产品推荐
相关产品推荐

