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

R中plot()函数如何确定x轴上数据点的绘制位置?

R 绘图点堆叠问题原因及解决方案

1. R基础绘图的坐标定位规则

R中plot(y ~ x)的绘图逻辑是按向量索引一一对应生成坐标点:

  • 对第i个观测,x轴坐标取x[i]的取值,y轴坐标取y[i]的取值
  • 只要两个取值都不是NA,就会在对应坐标位置绘制点
  • R不会自动按分组值匹配对应的y值,所有坐标都严格按索引位置对应

2. 出现点堆叠的根本原因

你的操作逻辑存在本质混淆:

  • 统计得到的OLR/PLR本来只有7个有效值,分别对应1-7这7个区间的频次,本质是汇总统计结果,原本就应该和x=1:7一一对应绘图,完全不需要做填充NA的操作
  • 后续你把OLR/PLR填充了上万个NA,凑到和随机生成的IY等长:IY是长度超过2万的向量,所有值都是1-7的随机整数,而OLR只有前7个位置有实际值,其余全是NA
  • 最终绘图时只有7个有效点,这7个点的x坐标是IY前7位的随机值,完全可能出现多个点x值相同的情况,自然就会堆叠在同一个x轴位置

另外注意你的代码里存在笔误:OLR6和OLR7的子集筛选条件完全一致,都是ylrt > 400 & ylrt <= 680,会导致两个统计值重复。

3. 正确绘图代码

你不需要生成IY向量,也不需要做NA填充,直接用1-7的分组值对应频次绘图即可:

# 加载必要包(你用到了as_tibble需要先加载tidyverse)
library(tidyverse)

# 保留你之前的统计逻辑,注意修复OLR7的筛选条件
# ...

# 直接绘图
x_group <- 1:7
# 绘制观测值散点
plot(x = x_group, y = OLR, 
     main = "Umbrella频次分布对比", 
     xlab = "区间分组", ylab = "出现频次",
     pch = 16, col = "blue", ylim = range(c(OLR, PLR), na.rm = T))
# 叠加预测值散点
points(x = x_group, y = PLR, pch = 16, col = "red")
# 加图例
legend("topright", legend = c("观测值", "预测值"), col = c("blue", "red"), pch = 16)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:45:03