[英]ggplot2 facets with different y axis per facet line: how to get the "best" from both facet_grid and facet_wrap?
[英]How to order facets based on facet_wrap from Y values?
有沒有辦法根據它們的 Y 值(又名count
)以降序動態重新排序這些方面 - 無需對順序進行硬編碼(給定與package
類似的列,具有數百個級別?
library(cranlogs)
library(tidyverse)
tidyverse_downloads <- cran_downloads(
packages = pkgs,
from = "2017-01-01",
to = "2017-06-30") %>%
tibble::as_tibble() %>%
group_by(package)
tidyverse_downloads %>%
ggplot(aes(x = date, y = count)) +
#geom_hline(yintercept = 0, color = "grey40") +
geom_line() +
#geom_smooth(method = "loess") +
theme_minimal() +
facet_wrap(~ package, scale = "free_y",ncol = 2) + theme(axis.text.x = element_text(angle = 90, hjust = 1))
我嘗試的是使用 package 庫(tidytext)和scale_y_reordered
tidyverse_downloads %>%
mutate(count = tidytext::reorder_within(count, date, package)) %>%
tidytext::scale_y_reordered() +
ggplot(aes(x = date, y = count)) +
geom_line() +
theme_minimal() +
facet_wrap(~ package, scale = "free_y",ncol = 2) + theme(axis.text.x = element_text(angle = 90, hjust = 1))
但是,這不會產生任何結果。 我猜我做錯了什么。 感謝任何幫助
您可以將每個 package 的總下載量相加,以按降序收集因子水平。
library(cranlogs)
library(tidyverse)
pkgs <- c('dplyr', 'broom', 'ggplot2', 'purrr')
tidyverse_downloads <- cran_downloads(
packages = pkgs,
from = "2017-01-01",
to = "2017-06-30") %>%
tibble::as_tibble()
tidyverse_downloads %>%
group_by(package) %>%
summarise(count = sum(count)) %>%
arrange(desc(count)) %>%
pull(package) -> levels
levels
#[1] "ggplot2" "dplyr" "purrr" "broom"
根據以上級別分配package
中的levels
。
tidyverse_downloads %>%
mutate(package = factor(package, levels)) %>%
ggplot(aes(x = date, y = count)) +
geom_line() +
theme_minimal() +
facet_wrap(~ package, scale = "free_y",ncol = 2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.