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
相关产品推荐
相关产品推荐

