返回

Plotly icicle 图排序和排列指南:掌控分层数据可视化

python

Plotly icicle 图:掌控排序和排列

在数据可视化中,icicle 图因其展现层次数据的清晰性而备受青睐。Plotly 库为创建 icicle 图提供了 px.icicle 函数,它允许用户通过多种选项自定义排序和排列,以满足特定的需求。

按权重排序

默认情况下,icicle 图按值从小到大排序。要按权重对值进行排序,请使用 sort 参数并将其设置为 True。这将按降序对 "权重" 列中的值进行排序,显示具有最高权重的值在最顶部。

按名称排序

按名称对 icicle 图中的值进行排序通常需要对数据进行预处理。Plotly 提供了 order 参数,可用于指定用于排序的列的名称列表。例如,要按 "Level0"、"Level1" 和 "Level2" 列中的名称进行排序,可以如下设置:

fig = px.icicle(df, path=['Level0', 'Level1', 'Level2'], values='Weight', order=['Level0', 'Level1', 'Level2'])

自然排序

有时,需要按照创建数据时的顺序进行自然排序。Plotly 允许使用自定义排序函数来实现此目的,可以通过 compare_func 参数指定。

自定义排序函数示例

以下示例展示了一个自定义排序函数,可根据 "Level0"、"Level1" 和 "Level2" 列中的值进行自然排序:

def custom_sort(a, b):
    """
    Custom sorting function to achieve the desired order.

    Args:
        a (list): List of values for the first element.
        b (list): List of values for the second element.

    Returns:
        int: -1 if a should come before b, 1 if b should come before a, or 0 if they are equal.
    """

    level0_a = a[0]
    level0_b = b[0]
    
    if level0_a < level0_b:
        return -1
    elif level0_a > level0_b:
        return 1
    else:
        level1_a = a[1]
        level1_b = b[1]
        
        if level1_a < level1_b:
            return -1
        elif level1_a > level1_b:
            return 1
        else:
            level2_a = a[2]
            level2_b = b[2]
            
            if level2_a < level2_b:
                return -1
            elif level2_a > level2_b:
                return 1
            else:
                return 0

然后,使用此自定义函数创建 icicle 图:

fig = px.icicle(df, path=['Level0', 'Level1', 'Level2'], values='Weight', compare_func=custom_sort)

结论

掌握 Plotly icicle 图的排序和排列选项对于创建有效且信息丰富的可视化至关重要。通过灵活地按权重、名称或自然顺序进行排序,你可以优化 icicle 图以清晰地呈现分层数据中的模式和见解。

常见问题解答

1. 如何在 icicle 图中显示标签?
答:使用 labels 参数指定要显示的标签。例如,labels={'path': ['地区', '城市', '商店']} 将在 icicle 图的每一层显示 "地区"、"城市" 和 "商店" 标签。

2. 如何调整 icicle 图中条形的大小?
答:使用 widthheight 参数调整条形的大小。例如,width=[0.5, 0.8, 1] 将使每个级别的条形宽度分别为 0.5、0.8 和 1。

3. 如何添加颜色到 icicle 图?
答:使用 color 参数设置条形颜色。颜色可以是字符串(例如 "red"、"blue")或 Plotly 可识别的颜色标度(例如 "Viridis"、"Turbo")。

4. 如何导出 icicle 图?
答:可以使用 Plotly 的 to_imagewrite_image 方法导出 icicle 图为图像文件(例如 PNG、JPEG)。

5. 如何将 icicle 图嵌入 Web 应用中?
答:可以使用 Plotly 的 plotshow 方法将 icicle 图嵌入 Web 应用中。plot 方法返回一个 HTML 表单,可以将其嵌入到 Web 页面中,而 show 方法在浏览器中显示交互式图。