【问题标题】: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:

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

      希望这会有所帮助!回复

      【讨论】:

        猜你喜欢
        • 2017-12-11
        • 1970-01-01
        • 2021-12-26
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 2015-07-10
        相关资源
        最近更新 更多