在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='ident')
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='ident')
geom_vline(xintercept=c(1。 3) 0. 5)
uj5u.com熱心網友回復:
這里有一個解決方案,它可以幫助你。
library(tidyverse)
plot_data %>%。
ggplot(aes(x=mperiod, y=amount))
geom_bar(stat='ident')
geom_vline(aes(xintercept = parse_number(mperiod) . 5))。
uj5u.com熱心網友回復:
在內部,geom_barplot將字符標簽轉換為整數1,2,3, ...。 這些被用作條形圖的位置。
獲得垂直線位置的一種方法是將字符向量mperiod轉換為因子,然后轉換為數字,那么它們將成為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='ident')
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='ident')
geom_vline(aes(xintercept=pmax(1. 5, as.numeric(as. factor(mperiod))-0。 5)))。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318954.html
標籤:
上一篇:模態分割值的分組柱狀圖



