用ggplot填充R中两条黄土平滑线之间的区域

2023-12-19

我想知道如何填充 ggplot 中黄土平滑线之间的区域。

以下数据框用于图片:

    x         y      ymin     ymax grp     ydiff
1   1  3.285614  3.285614 10.14177 min 6.8561586
2   1 10.141773  3.285614 10.14177 max 6.8561586
3   2  5.061879  5.061879 11.24462 min 6.1827368
4   2 11.244615  5.061879 11.24462 max 6.1827368
5   3  8.614408  8.614408 13.45030 min 4.8358931
6   3 13.450301  8.614408 13.45030 max 4.8358931
7   4  6.838143  6.838143 12.34746 min 5.5093150
8   4 12.347458  6.838143 12.34746 max 5.5093150
9   5 10.390673 10.390673 14.55314 min 4.1624713
10  5 14.553144 10.390673 14.55314 max 4.1624713
11  6 12.166937 12.166937 15.65599 min 3.4890495
12  6 15.655987 12.166937 15.65599 max 3.4890495
13  7 13.943202 13.943202 16.75883 min 2.8156277
14  7 16.758830 13.943202 16.75883 max 2.8156277
15  8  5.950011  5.950011 11.79604 min 5.8460259
16  8 11.796037  5.950011 11.79604 max 5.8460259
17  9 17.495731 17.495731 18.96452 min 1.4687841
18  9 18.964515 17.495731 18.96452 max 1.4687841
19 10 15.719466 15.719466 17.86167 min 2.1422059
20 10 17.861672 15.719466 17.86167 max 2.1422059
21 11 19.271996 19.271996 20.06736 min 0.7953623
22 11 20.067358 19.271996 20.06736 max 0.7953623

以下源生成具有法线的图形(未平滑):

ggplot(intdf) + 
    geom_point(aes(x=x, y=y, colour=grp)) +
    geom_ribbon(aes(x=x, ymin=ymin, ymax=ymax), fill="grey", alpha=.4) +
    geom_line(aes(x=x, y=y, colour=grp))

其中 x 和 y 是连续数值。 ymin 和 ymax 各自包含位置 x 处绿线和红线的 y 值。

现在我想平滑线条。我只需使用以下代码即可做到这一点:

ggplot(intdf) + 
    stat_smooth(aes(x=x, y=ymin, colour="min"), method="loess", se=FALSE) +
    stat_smooth(aes(x=x, y=ymax, colour="max"), method="loess", se=FALSE)

给出以下情节:

但我没能填补这两条线之间的区域。我尝试拟合黄土模型并使用预测值,但我想我完全使用了错误的预测变量。

谁能告诉我如何填充平滑线之间的区域?

提前致谢 丹尼尔


一种可能的解决方案,其中从绘图对象中获取黄土平滑数据并用于geom_ribbon:

# create plot object with loess regression lines
g1 <- ggplot(df) + 
  stat_smooth(aes(x = x, y = ymin, colour = "min"), method = "loess", se = FALSE) +
  stat_smooth(aes(x = x, y = ymax, colour = "max"), method = "loess", se = FALSE)
g1

# build plot object for rendering 
gg1 <- ggplot_build(g1)

# extract data for the loess lines from the 'data' slot
df2 <- data.frame(x = gg1$data[[1]]$x,
                  ymin = gg1$data[[1]]$y,
                  ymax = gg1$data[[2]]$y) 

# use the loess data to add the 'ribbon' to plot 
g1 +
  geom_ribbon(data = df2, aes(x = x, ymin = ymin, ymax = ymax),
              fill = "grey", alpha = 0.4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用ggplot填充R中两条黄土平滑线之间的区域 的相关文章

  • 在 Shiny 中叠加两个 ggplot

    我有一个非常大的数据集 我正在使用 ggplot 在 Shiny 上绘制它 我有一个与 x 轴上的值相关联的滑块 我想用它对选定的数据子集重新着色 并让其余数据保持原样 最简单的选择是重新创建整个绘图 但由于它是一个大型数据集 因此这是一个
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 美人鱼图:调整图表周围的空白

    我在用 Rstudio 编译的 Rmd 报告中使用了美人鱼图 在 HTML PDF 输出中 图表上方和下方有大量空白 请参见下面的示例 Header Text r library DiagrammeR mermaid graph TD cl
  • 在 R 中导入 csv 文件时如何保留前导零?

    当我写一个 csv来自 R 的文件 其中我的组名称以前导零值开头 前导零被保留 但是当我导入 csv前导零被删除 组名称被转换为整数 当我导入一个组时 如何保留组名称中的前导零 csvR 中的文件 Example df lt data fr
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • 如何读取 R 中的每个 .csv 文件并将其导出到单个大文件中

    你好 我有以下格式的数据 101 20130826T155649 3 1 round 0 10552 180 yellow 12002 1 round 1 19502 150 yellow 22452 1 round 2 28957 130
  • 根据 row_number() 过滤 data.frame

    更新 自从提出这个问题以来 dplyr 已经更新 现在按照 OP 的要求执行 我正在尝试获取第二行到第七行data frame using dplyr 我正在这样做 require dplyr df lt data frame id 1 1
  • 如何总结此R问题中的销售数量、售出酒类数量和花费金额

    我使用以下代码在 R 上上传我的数据 if file exists ames liquor rds url lt https github com ds202 at ISU materials blob master 03 tidyvers
  • 在 R 中使用逻辑 grep 抓取文本

    下午好 谢谢你帮我解答这个问题 我有兴趣抓取一组超过 5000 个 URL 的列表 我使用 lapply 和 readLines 使用下面的示例代码提取这些网页的文本 multipleURL lt c http dailymed nlm n
  • 通过 Shiny 中的串扰将 Plotly 与 DT 结合使用

    我正在编写一个应用程序来将 csv 文件读取为闪亮的并将散点图与 DT 表链接起来 我几乎遵循了 Plotly 网站上 DT 数据表上的示例 https plot ly r datatable https plot ly r datatab
  • 按组计算连续行中的值之间的差异

    这是我的一个df 数据框 group value 1 10 1 20 1 25 2 5 2 10 2 15 我需要按组计算连续行中的值之间的差异 所以 我需要一个结果 group value diff 1 10 NA because the
  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • R中整数类和数字类有什么区别

    我想先说我是一个绝对的编程初学者 所以请原谅这个问题是多么基本 我试图更好地理解 R 中的 原子 类 也许这适用于一般编程中的类 我理解字符 逻辑和复杂数据类之间的区别 但我正在努力寻找数字类和整数类之间的根本区别 假设我有一个简单的向量x
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

    我正在尝试使用 R 中的 readr read csv 读取 csv 文件 我导入的 csv 文件大约有 150 列 我只包含示例的前几列 我希望将第二列从默认类型 我执行 read csv 时为日期 覆盖为字符或其他日期格式 GIS Jo
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会
  • 导入错误:无法导入名称“时间戳”

    我使用以下代码在 python 3 6 3 中成功安装了 ggplot conda install c conda forge ggplot 但是当我使用下面的代码将其导入笔记本时 出现错误 from ggplot import Impor
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor

随机推荐