在 plotly 中显式设置箱线图的颜色

Posted

技术标签:

【中文标题】在 plotly 中显式设置箱线图的颜色【英文标题】:Explicitly set colours of the boxplot in ploltly 【发布时间】:2020-10-06 04:28:54 【问题描述】:

我正在使用plotly express 绘制boxplot 如下图:

px.box(data_frame=df, 
       y="price", 
       x="products",
       points="all")

但是,产品的盒子显示的颜色相同。它们是四种产品。我想用不同的颜色给每个上色,使用额外的参数 color_discrete_sequence 不起作用。

【问题讨论】:

【参考方案1】:

我使用plotly.express.data.tips() 作为示例数据集,并正在创建一个名为mcolour 的新列,以展示我们如何使用附加列进行着色。见下文;

## packages
import plotly.express as px
import numpy as np
import pandas as pd
## example dataset:
df = px.data.tips()

## creating a new column with colors
df['mcolour'] = np.where(
     df['day'] == "Sun" , 
    '#636EFA', 
     np.where(
        df['day'] == 'Sat', '#EF553B', '#00CC96'
     )
)
## plot
fig = px.box(df, x="day", y="total_bill", color="mcolour")
fig = fig.update_layout(showlegend=False)
fig.show()

因此,如您所见,您可以使用plotly.express.box() 中的color 参数基于另一列简单地分配颜色。

【讨论】:

【参考方案2】:

您需要在绘图之前添加此参数设置(作为有效解决方案的一部分),以便正确对齐(确实!)新颜色的箱形图。

fig.update_layout(boxmode = "overlay")

boxmode 设置“overlay”使绘图恢复到正常布局,在设置颜色后似乎被覆盖(设置为“group”)。

在情节帮助中,它提到了 boxmode:

"确定相同位置坐标的框如何显示在 图表。如果是“组”,则将框彼此相邻绘制 以共享位置为中心。如果'覆盖',框是 相互绘制 [...]"

希望这会有所帮助!回复

【讨论】:

以上是关于在 plotly 中显式设置箱线图的颜色的主要内容,如果未能解决你的问题,请参考以下文章

Plotly - 如何制作没有盒子的箱线图?

Python数据可视化 箱线图

GGPLOT箱线图按颜色细分,箱线图中间有平均值

Plotly express 箱线图悬停数据不起作用

使用 Plotly Graph 对象按中值对箱线图进行排序

R语言可视化:箱线图绘制