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


雷达卡




京公网安备 11010802022788号







