You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Plotly 3D散点图标记大小基于坐标点出现频率?

让Plotly 3D散点图标记大小随坐标出现频率变化的实现方法

1. 统计坐标点的出现频率

首先需要对原始数据按Rating_1、Rating_2、Rating_3的组合分组,统计每组的出现次数(即频率)。因为同一坐标组合的Quality值是固定的(由三个Rating的乘积决定),直接保留即可。

用dplyr实现

# 安装并加载dplyr(如果未安装)
install.packages("dplyr")
library(dplyr)

# 统计每组的出现次数
DF_freq <- DF %>%
  group_by(Rating_1, Rating_2, Rating_3) %>%
  summarise(
    Quality = first(Quality),
    Count = n()
  ) %>%
  ungroup()

用Base R实现

如果不想依赖dplyr,可使用基础R函数:

DF_freq <- aggregate(ID ~ Rating_1 + Rating_2 + Rating_3 + Quality, data = DF, FUN = length)
colnames(DF_freq)[5] <- "Count"  # 将统计列重命名为Count

2. 绘制带频率缩放标记的3D散点图

基于统计后的数据集,将标记大小绑定到Count列,并调整缩放参数让显示更合理:

library(plotly)

plot_ly(DF_freq, x = ~Rating_1, y = ~Rating_2, z = ~Rating_3,
        color = ~Quality, type = "scatter3d", mode = "markers",
        marker = list(
          symbol = "circle",
          size = ~Count,
          sizemode = "diameter",  # 按直径缩放,可选"area"按面积缩放
          sizeref = max(DF_freq$Count)/20,  # 控制最大标记的大小,可按需调整
          sizemin = 3  # 设置最小标记尺寸,避免低频点过小
        )) %>%
  add_markers(text = ~paste("Quality:", Quality, "\n出现次数:", Count)) %>%
  layout(scene = list(xaxis = list(title = "Novel"),
                      yaxis = list(title = "Benefit"),
                      zaxis = list(title = "Feasible")),
         title = "Quality Of Ideas(标记大小对应坐标出现频率)")

关键说明

  • sizeref的作用是缩放标记大小,公式为显示尺寸 = Count / sizeref,可以根据实际视觉效果调整数值。
  • 鼠标悬停时会显示对应的Quality和出现次数,方便查看细节。

内容的提问来源于stack exchange,提问作者Smuts94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:55:57