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

R语言绘制LULC像素值直方图拥挤、文字重叠等问题如何修复

LULC像素值分布直方图代码调整方案

原有代码与存在问题

原有绘制LULC像素值分布直方图的代码如下:

library(raster)
RupandehiLULC19<-raster('C:/Users/lenovo/Desktop/EM/RupandehiLULC2.tif')
plot(RupandehiLULC19)
hist(RupandehiLULC19, main="Boxplot of LULC By Pixel Value", xlab="Pixel Value", 
las=1,col=c("green"))

代码运行效果如下:
原有LULC直方图运行效果
运行生成的直方图存在三类问题:

  • 整体布局拥挤
  • 文字重叠:频率数值与坐标轴刻度值互相遮挡
  • 最高柱形超出绘图区域范围,对应的频率标签显示不全
    注:原代码标题存在笔误,实际绘制的是直方图(Histogram),不是箱线图(Boxplot),调整时可同步修正。

修复代码

通过调整绘图边距、手动设置坐标轴范围、自定义刻度与标签位置即可解决上述问题,调整后完整代码如下:

library(raster)
# 读取LULC栅格数据
RupandehiLULC19 <- raster('C:/Users/lenovo/Desktop/EM/RupandehiLULC2.tif')
plot(RupandehiLULC19)

# 临时调整绘图参数:放大边距预留文字空间,缩小坐标轴刻度字号避免拥挤
par(mar = c(6, 6, 4, 2) + 0.1, cex.axis = 0.9)

# 预计算直方图统计值,用于确定y轴范围
hist_stat <- hist(RupandehiLULC19, plot = FALSE)

# 正式绘制直方图
hist(
  RupandehiLULC19,
  main = "Histogram of LULC By Pixel Value",
  xlab = "Pixel Value",
  ylab = "Pixel Count",
  las = 1,
  col = "green",
  # y轴上限设为最大柱高的1.15倍,给顶部标签预留足够显示空间
  ylim = c(0, max(hist_stat$counts) * 1.15),
  # 暂时隐藏自动生成的x轴刻度,后续手动添加避免重叠
  xaxt = "n"
)

# 手动添加x轴刻度,刻度位置与柱形中心对齐
axis(side = 1, at = hist_stat$mids, labels = hist_stat$mids, padj = 0.6)

# 手动添加柱顶的频率数值,调整位置和字号避免遮挡
text(
  x = hist_stat$mids,
  y = hist_stat$counts,
  labels = hist_stat$counts,
  pos = 3,
  cex = 0.8,
  offset = 0.6
)

# 恢复R默认绘图参数,避免影响后续绘图操作
par(mar = c(5, 4, 4, 2) + 0.1, cex.axis = 1, xaxt = "s")

调整说明

  • 放大绘图边距后,图表各元素有足够排布空间,解决布局拥挤问题
  • 手动设置y轴范围预留冗余空间,最高柱形的顶部标签可完整显示,不会被绘图区边界裁切
  • 自定义坐标轴刻度位置、调整文字字号和标签偏移量,彻底解决刻度值与频率标签重叠的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:03:20