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

如何在ggplot中按(x,y)点出现次数增大散点尺寸?

解决方案

一、修改代码实现点尺寸随出现次数增大

由于x和y均为0-2的整数,本质是9种离散组合,直接统计每个组合的出现频次,再将频次映射为点大小会更高效,同时精准匹配你的需求。修改后的代码如下:

library(scattermore)
library(ggplot2)
library(dplyr)

# 初始化空数据框存储所有(x,y)对
all_pairs <- data.frame(query = integer(), sup = integer())

for (i in 1:6){
  query <- exp_df[[i,1]]
  sup <- exp_df[[i,2]]
  query_path <- paste0(query,".sscore.csv")
  sup_path <- paste0(sup,".sscore%0D.csv")
  # 读取并合并两文件的第4列数据
  shell_command <- sprintf("/bin/bash -c 'paste -d, <(cut -d, -f4 %s) <(cut -d, -f4 %s)'", query_path, sup_path)
  count_pairs <- system(shell_command, intern = TRUE)
  # 转换为整数型数据框
  current_pairs <- read.table(text = count_pairs, sep = ",", header = TRUE, col.names=c("query", "sup")) %>%
    mutate(across(c(query, sup), as.integer))
  # 合并到总数据框
  all_pairs <- bind_rows(all_pairs, current_pairs)
}

# 统计每个(x,y)组合的出现次数
pair_counts <- all_pairs %>%
  count(query, sup, name = "frequency")

# 绘制散点图,点大小关联出现频次
gg <- ggplot(pair_counts) +
  geom_scattermost(aes(x = query, y = sup, size = frequency), pixels = c(700,700)) +
  scale_size_continuous(range = c(1, 6)) # 可根据需求调整点大小范围
gg

代码说明:

  • 先收集所有迭代的(x,y)对,避免重复绘图叠加
  • 用dplyr::count()统计频次,比逐次画散点更高效,适配大样本量
  • 通过aes(size = frequency)让点大小直接关联出现次数,用scale_size_continuous控制大小区间

二、适合大样本量的替代绘图方案

针对离散二维组合的频次展示,除散点图外还有以下更直观的选择:

  • 热图(Heatmap):用颜色深浅表示频次,清晰展示各组合的分布差异

    ggplot(pair_counts, aes(x = query, y = sup, fill = frequency)) +
      geom_tile(color = "white") +
      scale_fill_gradient(low = "lightblue", high = "darkblue") +
      theme_minimal()
    
  • 气泡图(Bubble Plot):结合点大小与颜色双重映射频次,视觉冲击力更强(仅9个离散点,用geom_point足够高效)

    ggplot(pair_counts, aes(x = query, y = sup, size = frequency, color = frequency)) +
      geom_point(alpha = 0.8) +
      scale_size_continuous(range = c(5, 15)) +
      scale_color_gradient(low = "orange", high = "red") +
      theme_bw()
    
  • 马赛克图(Mosaic Plot):直观展示各组合的占比关系,适合分类变量的联合分布分析

    library(vcd)
    mosaic(table(all_pairs$query, all_pairs$sup), shade = TRUE, legend = TRUE)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:02:54