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

如何扩展ggplot密度曲线使其延伸至坐标轴边缘并趋近于0

解决密度曲线截断问题的两种方法

要让密度曲线延伸到指定的x轴边缘(-4到0),可以用以下两种简单方案:

  • 方法一:扩展原始数据集
    直接在你的两个数据框中分别加入对应x轴边界值、count为0的行(注意要转换为原始frequency单位,因为绘图时用了log10()转换),这样密度计算会包含这些边界点,曲线自然延伸到图表边缘:
# 扩展onlyOne数据集
onlyOne_extended <- rbind(onlyOne,
                          data.frame(frequency = 10^-4, count = 0),  # log10(10^-4) = -4
                          data.frame(frequency = 10^0, count = 0))   # log10(10^0) = 0

# 扩展tableOfGraphData数据集
tableOfGraphData_extended <- rbind(tableOfGraphData,
                                   data.frame(frequency.x = 10^-4, count.x = 0),
                                   data.frame(frequency.x = 10^0, count.x = 0))

# 使用扩展后的数据集绘图
ggplot()+
  geom_density(data = onlyOne_extended, aes(x = log10(frequency), weight = count), bw = 0.2, fill="black", alpha = 0.5)+
  geom_density(data = tableOfGraphData_extended, aes(x = log10(frequency.x), weight = count.x), bw = 0.2, fill = "red", alpha = 0.5)+
  coord_cartesian(xlim = c(-4, 0))+
  theme_light()
  • 方法二:手动计算密度曲线数据
    用density()函数直接指定计算范围(from=-4,to=0),生成完整的密度曲线数据后用geom_area绘制,这种方式对曲线范围的控制更直接:
# 计算onlyOne的密度曲线数据
dens_onlyOne <- density(log10(onlyOne$frequency), 
                        weights = onlyOne$count, 
                        bw = 0.2, 
                        from = -4, 
                        to = 0)
dens_df_onlyOne <- data.frame(x = dens_onlyOne$x, y = dens_onlyOne$y)

# 计算tableOfGraphData的密度曲线数据
dens_table <- density(log10(tableOfGraphData$frequency.x), 
                      weights = tableOfGraphData$count.x, 
                      bw = 0.2, 
                      from = -4, 
                      to = 0)
dens_df_table <- data.frame(x = dens_table$x, y = dens_table$y)

# 绘制曲线
ggplot() +
  geom_area(data = dens_df_onlyOne, aes(x = x, y = y), fill = "black", alpha = 0.5) +
  geom_area(data = dens_df_table, aes(x = x, y = y), fill = "red", alpha = 0.5) +
  coord_cartesian(xlim = c(-4, 0)) +
  theme_light()

两种方法都能解决曲线截断的问题,方法一更贴近你原有的代码逻辑,方法二对曲线范围的控制更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:32:42