R图上的Windrose百分比标签

R图上的Windrose百分比标签,r,ggplot2,R,Ggplot2,我正在使用此处发布的windrose功能: 我需要在单个行(而不是左侧)上显示数字的百分比,但到目前为止,我还无法确定如何显示。(目标描述见下图) 下面是生成该图的代码: p.windrose <- ggplot(data = data, aes(x = dir.binned,y = (..count..)/sum(..count..), fill = spd.binned)) +

我正在使用此处发布的windrose功能:

我需要在单个行(而不是左侧)上显示数字的百分比,但到目前为止,我还无法确定如何显示。(目标描述见下图)

下面是生成该图的代码:

  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))
标签