1. 单组情况

1)构造数据集

x <- 1:10
y <- x^2
ci_l <- x^2 - 0.5 * x
ci_r <- x^2 + 0.5 * xdat_plot <- data.frame(x, y, ci_l, ci_r)

数据集长下面这样:

    x   y ci_l  ci_r
1   1   1  0.5   1.5
2   2   4  3.0   5.0
3   3   9  7.5  10.5
4   4  16 14.0  18.0
5   5  25 22.5  27.5
6   6  36 33.0  39.0
7   7  49 45.5  52.5
8   8  64 60.0  68.0
9   9  81 76.5  85.5
10 10 100 95.0 105.0

2)绘制置信区间

添加置信区间的核心函数是:geom_ribbon(),并且要注意,先画置信区间,再绘制线条,才能保证线在置信区间的上方。

ggplot(dat_plot, aes(x = x)) +                  # x轴在此处添加,目的为了置信区间与拟合线共享同一个xgeom_ribbon(aes(ymin = ci_l, ymax = ci_r)) +  # 添加置信区间geom_line(aes(y = y))                         # 添加拟合线

(文末会对上面“丑丑”的置信区间进行美化。)

通常情况,所需的图片都是需要分组的,下面我们会进行分组绘制置信区间。


2. 多组情况

我们将会演示两种方式绘制分组情况绘制置信区间:

方法1

1)构造数据集

通常情况下,ggplot需要的向量化构造:

x <- 1:10
y1 <- x^2
ci_l1 <- x^2 - 0.5 * x
ci_r1 <- x^2 + 0.5 * xy2 <- 20 * log(x)
ci_l2 <- 20 * log(x) - 0.5 * x
ci_r2 <- 20 * log(x) + 0.5 * xdat_plot <- data.frame(rbind(cbind(x, y1, ci_l1, ci_r1), cbind(x, y2, ci_l2, ci_r2)))
names(dat_plot) <- c("x", "y", "ci_l", "ci_r")
dat_plot$group <- rep(c("G1", "G2"), each = 10)

数据样式:

    x         y     ci_l      ci_r group
1   1   1.00000  0.50000   1.50000    G1
2   2   4.00000  3.00000   5.00000    G1
3   3   9.00000  7.50000  10.50000    G1
4   4  16.00000 14.00000  18.00000    G1
5   5  25.00000 22.50000  27.50000    G1
6   6  36.00000 33.00000  39.00000    G1
7   7  49.00000 45.50000  52.50000    G1
8   8  64.00000 60.00000  68.00000    G1
9   9  81.00000 76.50000  85.50000    G1
10 10 100.00000 95.00000 105.00000    G1
11  1   0.00000 -0.50000   0.50000    G2
12  2  13.86294 12.86294  14.86294    G2
13  3  21.97225 20.47225  23.47225    G2
14  4  27.72589 25.72589  29.72589    G2
15  5  32.18876 29.68876  34.68876    G2
16  6  35.83519 32.83519  38.83519    G2
17  7  38.91820 35.41820  42.41820    G2
18  8  41.58883 37.58883  45.58883    G2
19  9  43.94449 39.44449  48.44449    G2
20 10  46.05170 41.05170  51.05170    G2

2)绘制置信区间

注意,这里分组的关键就是使用 group = 参数。

ggplot(dat_plot, aes(x = x, group = group)) +geom_ribbon(aes(ymin = ci_l, ymax = ci_r)) +geom_line(aes(y = y))

但是这里的颜色比较吃藕,所以我们改变一下线条的颜色与置信区间的颜色。

非常简单,我们将参数 group =color =fill = 替换即可。值得一提的是,这里的color = 如果加在ggplot()中,添加的就会是拟合线置信区间外边线两条曲线。若不想要置信区间的外边线, color =写在geom_line()中即可。

此外,还需要注意,绘制置信区间,若线条与区间是相同颜色,一定要修改置信区间的透明度,利用alpha = 进行修改,其范围在0-1之间,并且值越小越透明。

代码如下:

ggplot(dat_plot, aes(x = x, color = group, fill = group)) +geom_ribbon(aes(ymin = ci_l, ymax = ci_r), alpha = 0.3) +  # alpha 修改透明度geom_line(aes(y = y))

在大多数情况下,我们遇到的多组数据集长下面 方法2 这样,我们需要怎么进行绘制呢?下面继续进行讲解:


方法2

1)构造数据集

dat_plot <- data.frame(x, y1, ci_l1, ci_r1, y2, ci_l2, ci_r2) # 基于前文的数据
    x  y1 ci_l1 ci_r1       y2    ci_l2    ci_r2
1   1   1   0.5   1.5  0.00000 -0.50000  0.50000
2   2   4   3.0   5.0 13.86294 12.86294 14.86294
3   3   9   7.5  10.5 21.97225 20.47225 23.47225
4   4  16  14.0  18.0 27.72589 25.72589 29.72589
5   5  25  22.5  27.5 32.18876 29.68876 34.68876
6   6  36  33.0  39.0 35.83519 32.83519 38.83519
7   7  49  45.5  52.5 38.91820 35.41820 42.41820
8   8  64  60.0  68.0 41.58883 37.58883 45.58883
9   9  81  76.5  85.5 43.94449 39.44449 48.44449
10 10 100  95.0 105.0 46.05170 41.05170 51.05170

2)绘制置信区间

面对上述这种数据格式,我们处理起来也十分简单,我们只需要在对应的aes() 函数中,写清楚对应的分组名称即可。

color =fill = 一定要写在 aes() 里面!!!
color =fill = 一定要写在 aes() 里面!!!
color =fill = 一定要写在 aes() 里面!!!

重要的事情说三遍,具体代码如下所示:

ggplot(dat_plot, aes(x = x)) +geom_ribbon(aes(ymin = ci_l1, ymax = ci_r1, fill = "G1"), alpha = 0.3) +geom_ribbon(aes(ymin = ci_l2, ymax = ci_r2, fill = "G2"), alpha = 0.3) +geom_line(aes(y = y1, color = "G1")) +geom_line(aes(y = y2, color = "G2"))

但这样的置信区间还比较丑,下面我们给出一个略微美化的版本,并在代码中进行注释,说明每个函数的用意。

3)美化

ggplot(dat_plot, aes(x = x)) +geom_ribbon(aes(ymin = ci_l1, ymax = ci_r1, fill = "G1", color = "G1"), alpha = 0.3, linetype = 2) +        # linetype = 2 表示置信区间描边线为虚线geom_ribbon(aes(ymin = ci_l2, ymax = ci_r2, fill = "G2", color = "G2"), alpha = 0.3, linetype = 2) +geom_line(aes(y = y1, color = "G1")) +geom_line(aes(y = y2, color = "G2")) +theme_bw(base_family = "Times") +theme(panel.grid = element_blank(),legend.position = "top",                      # legend 置顶panel.border = element_blank(),text = element_text(family = "STHeiti"),      # Mac 系统中中文绘图plot.title = element_text(hjust = 0.5)) +     # 标题居中labs(x = "y", y = "x", title = "分组置信区间",color = "", fill = "")                      # 将置信区间与拟合线的 legend 合并,并且不要 legend 的小标题


想学习更多 ggplot 美化绘图的技巧,可以参考下述链接:

  • ggplot2:初次见面,请多多关照!

ggplot绘制置信区间 与 分组绘图技巧相关推荐

  1. ggplot绘制带误差棒、置信区间的柱状图,并调整颜色为渐变

    ggplot绘制带误差棒.置信区间的柱状图,并调整颜色为渐变 简单绘制柱状图 控制柱状宽度,间距 调整颜色渐变 简单绘制柱状图 要在ggplot中绘制带有置信区间的柱状图,你可以使用geom_bar和 ...

  2. Matplotlib实用绘图技巧总结

    在日常的业务数据分析 ,可视化是非常重要的步骤.这里总结了matplotlib常用绘图技巧,希望可以帮助大家更加更加高效的.美观的显示图表.作者:北山啦 Matplotlib 是 Python 的绘图 ...

  3. R:ggplot2分类别绘图的三种方式以及分组绘图的二种方式

    简单介绍一下ggplot2分类别绘图的三种方式:分组.分面.图形组合:以及长.宽数据如何实现分组绘图 长数据进行分组绘图是比较容易实现的,大部分的R绘图教程都有提到 对于横向数据如何分组绘图,大部分教 ...

  4. 怎么修改x轴_Origin绘图:共X轴Stack绘制分波态密度与绘图中的科学构思

    ☝点击上方蓝色字体,关注我们 今天谭编在审改稿件时,遇到这样一张态密度图(图1),目的是对比研究五元石墨烯(Penta-Graphene, PG)在吸附CO前后碳原子的分波态密度(PDOS)的变化. ...

  5. cad快捷键文件路径_你知道CAD图纸如何才能画得更快嘛?CAD快速绘图技巧!

    经常看到有人吐槽:画了N久CAD图纸,总一种感觉,即使自己用了很多插件,撸图速度再快,但所花的时间还是一样,这是咋回事呢?接下来给大家分享几个快速绘制CAD图纸的小技巧吧~ 一.找到一款适合的CAD软 ...

  6. ggplot绘制时间相关性折线图和面积图(2)

    折线图和面积图属于时间相关的周期性图表,既往我们已经介绍了使用ggplot绘制简单折线图的,今天我们继续使用我们的GDP数据来进一步深入绘制折线图,数据来源于网址: http://www.icane. ...

  7. 计算机辅助绘图方式,计算机辅助绘图技巧

    简介: 目前常用的计算机绘图软件是AutoCAD R14,以及在此平台上开发的"天正建筑CAD"."天正结构CAD"等.还有一些计算机辅助设计软件如" ...

  8. ggplot绘制小提琴图

    我们既往已经讲过使用ggplot绘制箱型图,今天我们来聊聊ggplot绘制小提琴图,小提琴图在SCI论文中非常常见,特别是基因类的文章. 小提琴图其实可以算是箱型图的变种(等于:箱型图+核密度图),箱 ...

  9. python气象绘图技巧之箱线图

    python气象绘图技巧–seaborn catplot python气象绘图技巧--seaborn 前言 一.构建dataframe和seaborn分类? 二.使用步骤 1.引入库 2.数据分析 总 ...

最新文章

  1. eclipse for C/C++
  2. 全北现代宣布江苏苏宁中后卫洪正好租借延长1年
  3. 陈一舟:在中国当企业家要有承受能力 失败了大家会看你笑话
  4. 2021年高考英语卷三成绩查询,2021年全国3卷高考外语卷难不难,今年全国3卷高考外语卷难度系数点评...
  5. 初建FreeMarker工程
  6. 【HDU - 5876】Sparse Graph(补图bfs,STLset)
  7. mikechen详谈架构师成长之3大步骤
  8. 如何判断自己是否到了该辞职的时候
  9. 「ruby/MiniMagick」用MiniMagick处理图片
  10. Java中的break和continue关键字使用总结
  11. php存储富文本编辑器内容到数据库
  12. angular Meterial错误 Did you add it to @NgModule.entryComponents
  13. 极智AI | 目标检测 VOC 格式数据集制作
  14. 每一次严重事故都是可以预测的
  15. c# 指定打开某个路径下的CMD_这招太厉害了,不用鼠标也可以打开指定文件
  16. 诊断和响应故障_验证数据库文件和备份
  17. 面试最常被问的 Java 后端题目及参考答案
  18. 传智java测试题答案_传智播客Java基础第一阶段习题
  19. 大端和小端C++转载记录
  20. 纽约大学坦登学院计算机专业,纽约大学坦登工程学院

热门文章

  1. 语音转换主要涉及技术记录
  2. Latex排版 Chapter1基本使用(文档结构插入表格、图片)
  3. 传奇手游服务器搭建_传奇手游怎么搭建服务器
  4. 【USRP】使用USRP制作超级跑马机(手动滑稽)
  5. 我上了个假“中台”!
  6. 我与我的专业计算机网络作文,我与网络的作文
  7. 转行软件测试3年了,听前辈说测试前途是IT里最low的,我慌了......
  8. 牛客网刷题3 小乐乐找最大数
  9. C++ 实现带监视哨的顺序查找
  10. EP21 Activity在非正常行为下的数据保存和恢复