在R ggplot2中,如何自动绘制垂直线
In R ggplot2 ,how to draw vertical lines automatically
在 R ggplot2 中,如何在列之间绘制垂直线
使用'geom_vline(xintercept=as.numeric(plot_data$mperiod)+0.5)',没用
plot_data <- data.frame(mperiod=paste0('Q',1:4),amount=c(1:4))
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(xintercept=as.numeric(plot_data$mperiod)+0.5)
使用'geom_vline(xintercept=c(1:3)+0.5)'时没问题,但我必须手动输入矢量。因为实际上,情况有点复杂,我想自动计算。任何人都可以帮忙吗?谢谢
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(xintercept=c(1:3)+0.5)
这是一个解决方案,我可以帮助你。
library(tidyverse)
plot_data %>%
ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(aes(xintercept = parse_number(mperiod) + .5))
在内部,geom_barplot
将字符标签转换为整数 1,2,3, ...
。这些用作条的位置。
获取垂直线位置的一种方法是将字符向量mperiod
转换为因子,然后转换为numeric
,然后它们将变为1,2,3...
。然后加上 0.5(定位在柱之间)。
library(magrittr)
library(ggplot2)
plot_data <- data.frame(mperiod=paste0('Q',1:4),amount=c(1:4))
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(aes(xintercept=as.numeric(as.factor(mperiod))+0.5))
如果您不想要右端的线,可以使用以下一种方法。
诀窍是减去 0.5 而不是加号,所以位置是 0.5, 1.5, ...
。并使用 pmax
将 0.5 移动到 1.5。
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(aes(xintercept=pmax(1.5, as.numeric(as.factor(mperiod))-0.5)))
在 R ggplot2 中,如何在列之间绘制垂直线
使用'geom_vline(xintercept=as.numeric(plot_data$mperiod)+0.5)',没用
plot_data <- data.frame(mperiod=paste0('Q',1:4),amount=c(1:4))
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(xintercept=as.numeric(plot_data$mperiod)+0.5)
使用'geom_vline(xintercept=c(1:3)+0.5)'时没问题,但我必须手动输入矢量。因为实际上,情况有点复杂,我想自动计算。任何人都可以帮忙吗?谢谢
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(xintercept=c(1:3)+0.5)
这是一个解决方案,我可以帮助你。
library(tidyverse)
plot_data %>%
ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(aes(xintercept = parse_number(mperiod) + .5))
在内部,geom_barplot
将字符标签转换为整数 1,2,3, ...
。这些用作条的位置。
获取垂直线位置的一种方法是将字符向量mperiod
转换为因子,然后转换为numeric
,然后它们将变为1,2,3...
。然后加上 0.5(定位在柱之间)。
library(magrittr)
library(ggplot2)
plot_data <- data.frame(mperiod=paste0('Q',1:4),amount=c(1:4))
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(aes(xintercept=as.numeric(as.factor(mperiod))+0.5))
如果您不想要右端的线,可以使用以下一种方法。
诀窍是减去 0.5 而不是加号,所以位置是 0.5, 1.5, ...
。并使用 pmax
将 0.5 移动到 1.5。
plot_data %>% ggplot(aes(x=mperiod,y=amount))+
geom_bar(stat='identity')+
geom_vline(aes(xintercept=pmax(1.5, as.numeric(as.factor(mperiod))-0.5)))