[英]R: Add a arrow on a circular barplot with ggplot2
我正在嘗試使用 ggplot2 制作物候圖,目前看起來像這樣: Circular barplot
現在我想添加一個表示平均角度的箭頭(“o = 角度”和“r = 幅度”),如下圖所示( Dahua-Machoa 等人,2018 年,第 70 頁)。 我找到了一種方法來使用 geom_vline() 和線性插值來添加一條線,以正確的角度繪制它,但我找不到一種方法來修改它的長度並給它一個類似箭頭的形式。
可以用 ggplot2 來做嗎?
提前致謝。
這是我的代碼。
Mes<-c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov"
, "Dec")
mess<-(seq(1,12,1))
FlbudBr<-c(0,12,25,44,32,5,12,1,4,56,11,10)
dg<-c(15, 45,75,105,135,165,195,225,255,285,315,345)
data<-data.frame(Mes,mess,FlbudBr,dg)
library(NISTunits)
data$cos<-cos(NISTdegTOradian(data$dg))
data$sin<-sin(NISTdegTOradian(data$dg))
x<-sum(data$FlbudBr*data$cos)/sum(data$FlbudBr)
y<-sum(data$FlbudBr*data$sin)/sum(data$FlbudBr)
r<-sqrt((x)^2+(y)^2)
o<-180-NISTradianTOdeg(acos(x/r))
library(ggplot2)
library(ggthemes)
ggplot(data, aes(mess, FlbudBr)) +
coord_polar() +
geom_bar(stat = "identity", fill = "#F8C471", color ="black", width = 0.8) +
scale_x_continuous(breaks = 1:12, labels = data$Mes, expand = c(.007,0)) +
geom_hline(yintercept = seq(0, 15, by = 5), color = "gray90", alpha= 0.4) +
geom_vline(xintercept= ((139.57-135)/(150-135)*(5.5-5)+5))+
ylab("Fl bud Br")+
theme_bw()+
theme(panel.grid.minor = element_blank(), axis.title.x = element_blank(),
panel.border = element_blank())
使用annotate
。 使用yend
指定行長度。 arrow = arrow()
將添加箭頭。
p <- ggplot(data, aes(mess, FlbudBr)) +
coord_polar() +
geom_bar(stat = "identity", fill = "#F8C471", color ="black", width = 0.8) +
scale_x_continuous(breaks = 1:12, labels = data$Mes, expand = c(.007,0)) +
geom_hline(yintercept = seq(0, 15, by = 5), color = "gray90", alpha= 0.4) +
ylab("Fl bud Br")+
theme_bw()+
theme(panel.grid.minor = element_blank(), axis.title.x = element_blank(),
panel.border = element_blank())
arrow_x <- ((139.57-135)/(150-135)*(5.5-5)+5)
p + annotate(
"segment",
x = arrow_x,
xend = arrow_x,
y = 0,
yend = 25,
colour = "red",
size = 1,
arrow = arrow()
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.