【问题标题】:Explicitly set colours of the boxplot in ploltly在 plotly 中显式设置箱线图的颜色
【发布时间】:2020-10-06 04:28:54
【问题描述】:
我正在使用plotly express 绘制boxplot 如下图:
px.box(data_frame=df,
y="price",
x="products",
points="all")
但是,产品的盒子显示的颜色相同。它们是四种产品。我想用不同的颜色给每个上色,使用额外的参数 color_discrete_sequence 不起作用。
【问题讨论】:
标签:
python
python-3.x
plotly
plotly-python
plotly-express
【解决方案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:
"确定相同位置坐标的框如何显示在
图表。如果是“组”,则将框彼此相邻绘制
以共享位置为中心。如果'覆盖',框是
相互绘制 [...]"
希望这会有所帮助!回复