本文介绍了ggplot2:如何在时间x轴上将文本添加到多条垂直线(geom_vlines)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请看下面的例子
library(dplyr)
library(lubridate)
library(ggplot2)
data <- data_frame(time = c(ymd(20160201),
ymd(20160202),
ymd(20160203),
ymd(20160201),
ymd(20160202)),
value = c(1,1,1,2,2),
group = c('A','A','B','B','B'))
events <- data_frame(time = c(ymd(20160201),
ymd(20160202)),
text = c('who let the dogs out?',
'who? who? who?'))
ggplot(data, aes(x = time, y = value, group = group, color = group)) +
geom_line(size = 2 ) +
geom_vline(data = events, aes(xintercept = as.numeric(time)))
> data
# A tibble: 5 × 3
time value group
<date> <dbl> <chr>
1 2016-02-01 1 A
2 2016-02-02 1 A
3 2016-02-03 1 B
4 2016-02-01 2 B
5 2016-02-02 2 B
> events
# A tibble: 2 × 2
time text
<date> <chr>
1 2016-02-01 who let the dogs out?
2 2016-02-02 who? who? who?
我想为每个组(A和B)获取变量value
的折线图,并在每次events
数据帧中发生事件时绘制垂直线.
I would like to get a line chart for the variable value
for each group (A and B) and plot vertical lines every time there is an event in the events
dataframe.
使用创意使用日期轴绘制ggplot垂直线,如何获取垂直geom_vline到课程日期的x轴?和如何在ggplot中为垂直线添加图例?我可以轻松做到这一点:
Using the ideas ggplot vertical line with date axis, How to get a vertical geom_vline to an x-axis of class date? and How to add legend for vertical lines in ggplot? I can easily do that:
ggplot(data, aes(x = time, y = value, group = group, color = group)) +
geom_line(size = 2 ) +
geom_vline(data = events, aes(xintercept = as.numeric(time)))
问题是我想用相应的文本标记每个垂直线(每个事件),如.
Unfortunately, doing the following does not work
ggplot(data, aes(x = time, y = value, group = group, color = group)) +
geom_line(size = 2 ) +
geom_vline(data = events, aes(xintercept = as.numeric(time))) +
geom_text(data = events, aes(x = as.numeric(time), y = 0, label = text))
What is wrong here? any ideas?Thanks!
推荐答案
ggplot(data, aes(x = time)) +
geom_line(aes(y = value, group = group, color = group), size = 2 ) +
geom_vline(data = events, aes(xintercept = as.numeric(time))) +
geom_text(data = events, mapping = aes(label = text, y = 0), angle = 60, hjust = 0)
这篇关于ggplot2:如何在时间x轴上将文本添加到多条垂直线(geom_vlines)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!