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

R语言基于CSV数据绘制带对数刻度直方图问题求助

R绘制指定列的对数轴直方图解决方案

问题核心原因

  • 原代码只传入了Count列作为绘图数据,R默认使用序列索引作为x轴数值,不会匹配你的Value列
  • 未手动指定y轴范围,导致y轴显示和参考图不一致

修复后完整代码

# 读入本地csv数据(如果不用样例数据可以取消注释下面一行)
# k <- read.csv("dir/k.csv")

# 你提供的样例数据
k <- structure(list(Value = 1:101, Count = c(8512998L, 2524797L, 408468L, 
141472L, 72906L, 43135L, 29530L, 21288L, 16890L, 13181L, 10935L, 
8941L, 7883L, 6677L, 5995L, 5259L, 4802L, 4124L, 3912L, 3411L, 
3228L, 2761L, 2690L, 2335L, 2200L, 1878L, 1792L, 1586L, 1520L, 
1219L, 1232L, 1087L, 1027L, 895L, 845L, 761L, 781L, 712L, 676L, 
614L, 578L, 506L, 476L, 452L, 438L, 394L, 373L, 345L, 325L, 348L, 
320L, 257L, 260L, 219L, 227L, 213L, 177L, 182L, 170L, 151L, 135L, 
127L, 118L, 116L, 123L, 96L, 115L, 69L, 72L, 78L, 70L, 63L, 60L, 
64L, 67L, 50L, 63L, 64L, 63L, 49L, 53L, 45L, 48L, 48L, 40L, 56L, 
28L, 44L, 40L, 32L, 22L, 18L, 30L, 18L, 23L, 15L, 27L, 22L, 22L, 
21L, 10L)), class = "data.frame", row.names = c(NA, -101L))

# 核心绘图代码
plot(
  x = k$Value, 
  y = k$Count, 
  log = "y", 
  type = 'h', 
  lwd = 10, 
  lend = 2,
  xlab = "Value",
  ylab = "Count",
  ylim = c(10, 1e7) # 可根据参考图的y轴上下限调整数值
)

# 可选:自定义y轴刻度标签,和参考图完全对齐
# axis(side = 2, at = c(10, 100, 1000, 10000, 100000, 1000000, 10000000), labels = c("10", "100", "1k", "10k", "100k", "1M", "10M"))

调整说明

  • 显式指定x = k$Value后,x轴就会完全对应你数据里的Value列数值
  • 修改ylim参数的两个数值,分别对应y轴的最小值和最大值,即可快速对齐参考图的y轴显示范围
  • 若需要自定义y轴的刻度显示格式,取消上面axis代码的注释,修改at和labels参数的数值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:18:02