楼主: casey_c
15319 3

[学习分享] ggplot2 给图片添加辅助线 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.1003
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

楼主
casey_c 发表于 2016-12-27 10:53:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以各种不同的数据图表为例,具体说明这类问题
1、横轴为分类变量、纵轴为连续变量的数据图表
  1. # 示例数据
  2.     dat <- read.table(header=TRUE, text='
  3.          cond result
  4.       control     10
  5.     treatment   11.5
  6.     ')
  7.    
  8.     library(ggplot2)
复制代码
绘制横跨整坐标系的直线
因为y轴是连续的,所以在这里使用 geom_hline, 当然在x轴是连续的情况下也可以使用 geom_vline (加入 xintercept参数) 。
  1. # 基本的条形图
  2.     bp <- ggplot(dat, aes(x=cond, y=result)) +
  3.         geom_bar(position=position_dodge(), stat="identity")
  4.     bp
  5.    
  6.     # line 加入一个水平线
  7.     bp + geom_hline(aes(yintercept=12))
  8.    
  9.     # 让线变成红色的虚线
  10.     bp + geom_hline(aes(yintercept=12), colour="#990000", linetype="dashed")
复制代码
1.png 2.png 3.png
为不同分类变量绘制独立的辅助线
为了给每个条形图绘制不同的辅助线,我们需要用到geom_errorbar命令。我们的辅助线实际上是一个没有高度的误差带,我们需要指定一系列y值来使它成为一条辅助线。
  1. # 为每个条形图绘制单独的水平线。首先在dat数据集中加入一列
  2.     dat$hline <- c(9,12)
  3.     dat
  4.     #>        cond result hline
  5.     #> 1   control   10.0     9
  6.     #> 2 treatment   11.5    12
  7.    
  8.     # 需要重新设置bp,因为数据已经发生改变
  9.     bp <- ggplot(dat, aes(x=cond, y=result)) +
  10.         geom_bar(position=position_dodge(), stat="identity")
  11.    
  12.     # 为每个条形图绘制单独的线
  13.     bp + geom_errorbar(aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")
  14.    
  15.     # 让线短一点
  16.     bp + geom_errorbar(width=0.5, aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")
  17.    
  18.    
  19.     # 即使我们从另一个数据框中获得hline的值,依然可以获得相同的结果
  20.     # 用hline重新定义数据框
  21.     dat_hlines <- data.frame(cond=c("control","treatment"), hline=c(9,12))
  22.     dat_hlines
  23.     #>        cond hline
  24.     #> 1   control     9
  25.     #> 2 treatment    12
  26.    
  27.     # 根据dat绘制条形图,根据dat_hlines绘制线
  28.     bp + geom_errorbar(data=dat_hlines, aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")
复制代码
4.png 5.png 6.png 7.png 8.png
在不同的群组中绘制辅助线
我们也可以为分组的条形图添加辅助线。在这个例子中,虽然看起来像只有两条辅助线,但是由于我们只能分别在每个条形上方绘制辅助线,所以实际上我们在图中一共画了四条线。这看起来像是个无奈之举,不过它并不会造成什么问题。
  1. dat <- read.table(header=TRUE, text='
  2.          cond group result hline
  3.       control     A     10     9
  4.     treatment     A   11.5    12
  5.       control     B     12     9
  6.     treatment     B     14    12
  7.     ')
  8.     dat
  9.     #>        cond group result hline
  10.     #> 1   control     A   10.0     9
  11.     #> 2 treatment     A   11.5    12
  12.     #> 3   control     B   12.0     9
  13.     #> 4 treatment     B   14.0    12
  14.    
  15.     # 构建一个标准的条形图
  16.     bp <- ggplot(dat, aes(x=cond, y=result, fill=group)) +
  17.         geom_bar(position=position_dodge(), stat="identity")
  18.     bp
  19.    
  20.     # 辅助线(高度为0的误差带)绘制在条形图中的两个的上方,虽然有四条线段,但是看起来像两条
  21.     bp + geom_errorbar(aes(y=hline, ymax=hline, ymin=hline), linetype="dashed")
复制代码
9.png 10.png 11.png
为分组的独立条形图绘制辅助线
当然,即使分组了,我们依然可以为分别每个独立的条形图绘制辅助线。
  1. dat <- read.table(header=TRUE, text='
  2.          cond group result hline
  3.       control     A     10    11
  4.     treatment     A   11.5    12
  5.       control     B     12  12.5
  6.     treatment     B     14    15
  7.     ')
  8.    
  9.     # 定义基本的条形图
  10.     bp <- ggplot(dat, aes(x=cond, y=result, fill=group)) +
  11.         geom_bar(position=position_dodge(), stat="identity")
  12.     bp
  13.    
  14.     bp + geom_errorbar(aes(y=hline, ymax=hline, ymin=hline), linetype="dashed",
  15.                        position=position_dodge())
复制代码
12.png 13.png
以上内容转自 数析学院 ,原文后面还有两个坐标轴都是连续的数据图表情况,有空再继续搬运

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot GPL treatment 图片

沙发
yangming98 发表于 2016-12-27 23:07:34 来自手机
casey_c 发表于 2016-12-27 10:53
以各种不同的数据图表为例,具体说明这类问题
1、横轴为分类变量、纵轴为连续变量的数据图表
绘制横跨整坐 ...
好的好的

藤椅
casey_c 发表于 2016-12-28 10:09:17

板凳
2095144011 发表于 2018-10-8 17:07:12
怎么在坐标轴上标注呢?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 08:22