4

plotly express用来绘制boxplot如下所示:

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

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

4

2 回答 2

4

我正在使用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()

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

于 2020-06-16T17:15:05.280 回答
0

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

fig.update_layout(boxmode = "overlay")

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

在 plotly 帮助中,它谈到了 boxmode:

“确定如何在图表上显示同一位置坐标处的框。如果是“组”,则框会以共享位置为中心彼此相邻绘制。如果“叠加”,则框会彼此重叠绘制 [... ]"

希望这可以帮助!R

于 2021-10-20T18:53:34.750 回答