如何根据交叉点的大小在 Plotly 中构建具有气泡大小的气泡图?

Posted

技术标签:

【中文标题】如何根据交叉点的大小在 Plotly 中构建具有气泡大小的气泡图?【英文标题】:How can I build a bubble chart in Plotly with bubble size based on how large an intersection is? 【发布时间】:2021-11-26 17:12:30 【问题描述】:

所以我试图用气泡图可视化一堆列的交叉点。我从一个简单的散点图开始,但意识到我错过了数据中任何给定交叉点的普遍程度。散点图只说明存在交叉点。我将使用伪布尔列作为一个简单的示例,但这适用于任何分类数据:

import pandas as pd
import plotly.express as px    
data_temp = pd.DataFrame('bool_col_1': [1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1], 
                          'bool_col_2': [1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1])
fig = px.scatter(data_temp, x='bool_col_1', y='bool_col_2')
fig.show()

这会输出类似于 this 的内容。

正如您可能知道的那样,这个散点图并没有告诉我有多少数据在例如两个值都是“1”的点相交,它只告诉我至少有一行在数据框就是这种情况。

我想构建一个气泡图,该气泡图将根据点所代表的数据交集的普遍程度来动态确定图中每个点的大小。到目前为止,我还没有在 Plotly 的 express 或 graph_objects 模块中找到一种方法(它必须是 Plotly)。那里的每个指南都只介绍了如何根据某一列确定气泡大小。

【问题讨论】:

【参考方案1】: 这实际上是一个直方图。 在 pandasvalue_counts() 生成计数 在 plotly size 参数引用列中来自 pandas 已将两个轴更改为分类
px.scatter(
    data_temp.value_counts().reset_index(), x="bool_col_1", y="bool_col_2", size=0
).update_layout(ax:"type": "category" for ax in ["xaxis","yaxis"])

【讨论】:

以上是关于如何根据交叉点的大小在 Plotly 中构建具有气泡大小的气泡图?的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:如何根据列值设置标记大小?

如何在R中更改Plotly Toolbar的大小

减少 Plotly.js 库的大小

Plotly Express 条形图中具有不同组大小的组条

Plotly:如何在 Plotly 中绘制具有渐变颜色的矩形?

减少 Plotly 在 Python 中保存的 json 文件大小