如何在R的hist、boxplot中标记特定值?是否需用ggplot2?
用R基础绘图标记特定地区数据点的方案
基础绘图(hist/boxplot)完全能实现你的需求
不用纠结ggplot2,用基础绘图自带的points()和text()函数就能轻松给图表加带标签的标记点,给你改好的代码示例:
1. 直方图标记特定地区
先定位你要标记的地区对应的数值(假设你的数据框里有地区列叫region):
# 替换成你要标记的地区名称 target_region <- "XX地区" # 提取该地区的无子女夫妇占比数值 target_hist_val <- tableau.complet$proportion.coupleSenf[tableau.complet$region == target_region] # 绘制直方图 hist(tableau.complet$proportion.coupleSenf, main = "不同地区无子女夫妇占比", xlab = "无子女夫妇占比", ylab = "地区数量", col = "brown") # 用红色实心点标记目标值,y设为0是贴在x轴上,也可以根据直方图高度调整 points(x = target_hist_val, y = 0, pch = 19, col = "red", cex = 1.2) # 加标签,pos=3表示标签在点上方,避免遮挡 text(x = target_hist_val, y = 1, labels = target_region, col = "red", pos = 3)
2. 箱线图标记特定地区
同样先提取目标地区的14岁以下人口占比:
# 提取目标地区的对应数值 target_box_val <- tableau.complet$part.moins.14[tableau.complet$region == target_region] # 绘制箱线图 boxplot(tableau.complet$part.moins.14, main="14岁以下人口占比分布", ylab="14岁以下人口占比", col= "brown", las =1 ) # 箱线图的x轴位置是1(单组数据),用蓝色点标记 points(x = 1, y = target_box_val, pch = 19, col = "blue", cex = 1.2) # 标签稍微偏移一点,避免和点重叠 text(x = 1.1, y = target_box_val, labels = target_region, col = "blue")
关于ggplot2的说明
如果你之后想尝试ggplot2,当然也能实现,但需要掌握它的图层语法。不过你现在不太会用的话,优先用基础绘图更高效,不用额外学习新包的逻辑,直接在你现有代码基础上扩展就行。
内容的提问来源于stack exchange,提问作者NA_
相关产品推荐
相关产品推荐

