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

R语言绘制区分正负值的气泡图 实现颜色标识及点位数值标注

R绘制区分正负值的带标注气泡图实现代码

完整可运行修改版代码

library(sp)
library(rgdal)
require(gstat)
setwd("C:/Users/49151/Desktop")

# 导入数据
data <- read.csv("kerpentest0909x.csv")

head(data)

hist(data$Z, breaks = 20, xlab = "沉降速率 (毫米/年)", main = "Kreuz Kerpen沉降速率直方图")
summary(data$Z)

# 若数据存在偏度可取消下方注释做对数转换
# data$Z.1 <- log10(data$Z)
# hist(data$Z.1, breaks = 10, xlab = "沉降速率 (毫米/年)", main = "Kreuz Kerpen沉降速率直方图")

# 转换为空间点数据
coordinates(data) <- c("X", "Y")
# 定义投影
proj4string(data) <- CRS("+init=epsg:32632")

# 绘制区分正负值的气泡图
# 气泡大小由Z值绝对值决定,正值红色、负值蓝色
plot(data, 
     asp = 1, 
     cex = 4 * abs(data$Z) / max(abs(data$Z)), 
     col = ifelse(data$Z > 0, "#e74c3c", "#3498db"),
     pch = 16, # 实心圆点视觉效果更清晰,可改回1为空心圆
     lwd = 2)

# 为每个气泡标注对应Z值,保留2位小数
text(coordinates(data), 
     labels = round(data$Z, 2), 
     pos = 3, # 标注在气泡上方,1下/2左/3上/4右
     cex = 0.7, # 标注字体大小
     col = "black")

修改说明

  • 解决正负值气泡展示问题:将原尺寸计算逻辑改为基于Z值的绝对值计算,确保负值也能生成对应大小的气泡,数值绝对值越大气泡尺寸越大
  • 正负值颜色区分:通过ifelse判断Z值正负分配不同颜色,示例中正值为红色、负值为蓝色,可自行替换色值调整
  • 点位数值标注:调用text()函数在气泡对应位置打印数值,可通过调整pos参数修改标注相对气泡的位置,调整cex参数修改标注字体大小

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:57:03