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

密度估计折线图异常求助:Plot of Density, type="l"

解决密度折线图异常的问题

嘿,我来帮你搞定这个折线图的问题!你提到用type="l"绘制密度图时图形异常,本该是单条连续折线却出了问题,核心原因很明确:你的网格点x向量没有按从小到大的顺序排列。

折线图是严格按照数据在向量里的先后顺序连接点的,如果x是乱序的,线条就会在不同x值之间来回跳跃,自然没法呈现出密度图该有的平滑连续曲线。

具体解决步骤

我直接用你提供的数据来演示怎么修复:

  1. 先把x和y整理成R向量(对应你给出的数据):
x <- c(0.100001, 0.600001, 0.500001, 0.800001, 0.500001, 0.100001, 0.600001, 0.300001,
       0.100001, 0.400001, 0.700001, 0.500001, 0.000001, 0.200001, 0.700001, 0.500001,
       0.000001, 0.400001, 0.500001, 0.400001, 0.200001, 0.100001, 0.600001, 0.700001,
       0.700001, 0.200001, 0.800001, 0.500001, 0.200001, 0.200001)
y <- c(1.2246774, 1.1437131, 1.3626914, 0.6381394, 1.3626914, 1.2246774, 1.1437131, 1.5893983,
       1.2246774, 1.5158009, 0.8852983, 1.3626914, 0.6912818, 1.5227328, 0.8852983, 1.3626914,
       0.6912818, 1.5158009, 1.3626914, 1.5158009, 1.5227328, 1.2246774, 1.1437131, 0.8852983,
       0.8852983, 1.5227328, 0.6381394, 1.3626914, 1.5227328, 1.5227328)
  1. 把x和y合并成数据框,方便排序:
df <- data.frame(x = x, y = y)
  1. 按x的值从小到大排序数据框:
df_sorted <- df[order(df$x), ]
  1. 用排序后的数据绘制折线图:
plot(df_sorted$x, df_sorted$y, type = "l", xlab = "网格点x", ylab = "密度估计值y", main = "连续密度折线图")

额外优化建议

观察你的数据,发现同一个x值对应多个y值(比如x=0.5出现了好几次),如果直接连接这些点,折线可能会有小波动。你可以先对相同x的y值做聚合处理(比如取均值),得到更平滑的密度曲线:

# 需要先加载dplyr包,如果没安装先运行 install.packages("dplyr")
library(dplyr)

df_aggregated <- df %>%
  group_by(x) %>%
  summarise(y_mean = mean(y)) %>%  # 对相同x的y取均值
  arrange(x)

# 绘制聚合后的折线图
plot(df_aggregated$x, df_aggregated$y_mean, type = "l", xlab = "网格点x", ylab = "平均密度估计值", main = "聚合后平滑密度折线图")

这样处理后,就能得到你想要的单条连续折线啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:08:02