R图上的Windrose百分比标签
我正在使用此处发布的windrose功能: 我需要在单个行(而不是左侧)上显示数字的百分比,但到目前为止,我还无法确定如何显示。(目标描述见下图) 下面是生成该图的代码:R图上的Windrose百分比标签,r,ggplot2,R,Ggplot2,我正在使用此处发布的windrose功能: 我需要在单个行(而不是左侧)上显示数字的百分比,但到目前为止,我还无法确定如何显示。(目标描述见下图) 下面是生成该图的代码: p.windrose <- ggplot(data = data, aes(x = dir.binned,y = (..count..)/sum(..count..), fill = spd.binned)) +
p.windrose <- ggplot(data = data,
aes(x = dir.binned,y = (..count..)/sum(..count..),
fill = spd.binned)) +
geom_bar()+
scale_y_continuous(breaks = ybreaks.prct,labels=percent)+
ylab("")+
scale_x_discrete(drop = FALSE,
labels = waiver()) +
xlab("")+
coord_polar(start = -((dirres/2)/360) * 2*pi) +
scale_fill_manual(name = "Wind Speed (m/s)",
values = spd.colors,
drop = FALSE)+
theme_bw(base_size = 12, base_family = "Helvetica")
p.windrose您可以做的一件事是制作一个用于标签的额外data.frame。由于无法从您的问题中获得数据,我将在下面用模拟数据进行说明:
库(ggplot2)
#模拟数据
df@teunbrand的回答让我非常接近!我想添加代码,以防将来有人遇到类似的问题
# Create the labels:
x_location <- pi # x location of the labels
# Get the percentage
T_data <- data %>%
dplyr::group_by(dir.binned) %>%
dplyr::summarise(count= n()) %>%
dplyr::mutate(y = count/sum(count))
labels <- data.frame(x = x_location,
y = scales::extended_breaks()(range(T_data$y)))
# Create figure
p.windrose <- ggplot() +
geom_bar(data = data,
aes(x = dir.binned, y = (..count..)/sum(..count..),
fill = spd.binned))+
geom_text(data = labels,
aes(x=x, y=y, label = scales::percent(y, 1))) +
scale_y_continuous(breaks = waiver(),labels=NULL)+
scale_x_discrete(drop = FALSE,
labels = waiver()) +
ylab("")+xlab("")+
coord_polar(start = -((dirres/2)/360) * 2*pi) +
scale_fill_manual(name = "Wind Speed (m/s)",
values = spd.colors,
drop = FALSE)+
theme_bw(base_size = 12, base_family = "Helvetica") +
theme(axis.ticks.y = element_blank(), # Disables default y-axis
axis.text.y = element_blank())
#创建标签:
x_位置%
dplyr::摘要(count=n())%>%
dplyr::mutate(y=count/sum(count))
标签