r - 图上的 R Windrose 百分比标签
问题描述
我正在使用此处发布的 windrose 功能:带 ggplot (R) 的 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")
我用我正在尝试做的事情标记了我到目前为止的数字!如果标签自动选择该方向上风最小的位置,或者它有一个放置标签以便可以更改它,那就太好了。
我尝试使用 geom_text,但我收到一条错误消息,提示“美学必须是有效的数据列”。
谢谢你的帮助!
解决方案
@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())
推荐阅读
- c# - 我可以在创建实例之前确保静态构造函数已经完成吗?
- python - 如何使用 Pandas 日历热图绘制特定日期
- json - JSON 到 CSV:每行的列数可变
- javascript - 基于页面禁用组件功能
- sql - 在需要强制转换以便加入的列上加入表
- sql - 识别提前到期
- c# - 如何将 SelectMany 用于 Observable.FromEventPattern 序列上的异步逻辑?
- python - 有没有办法强制关闭打开的 COM 端口设备?
- regex - 从包含数字、符号和字符的字符串中提取子字符串的正确 RE2 正则表达式是什么?
- r - 如何将ascii文件中的数据导入R中的向量?