R ggplot2 facet wrap点图重新排序每个
R ggplot2 facet wrap dot plot reorder each
我使用 public mtcars 数据集得到了下图。我先转换成tibble,把汽车信息留成我可以用的栏目。
mtcars <- as_tibble(mtcars, rownames = 'car')
ggplot(mtcars, aes(x = mpg, y = reorder(car, mpg))) +
geom_point()
你可以看到我根据 mpg 的值重新排序了 y 轴的汽车。
我也有一个长数据框:
mtcars_numeric <- mtcars %>%
dplyr::select(car, mpg, disp, hp, drat, wt, qsec)
mtcars_long_numeric_with_mpg <- pivot_longer(mtcars_numeric, names_to = 'names', values_to = 'values', 2:7)
ggplot(mtcars_long_numeric_with_mpg, aes(x = values, y = reorder(car, values))) +
geom_point() + facet_wrap(~names, scales = 'free_x')+
theme(text = element_text(size=6))
当所有方面都不同时,如何将每辆车按价值排序?我希望重新排列 y 轴标签,使每个小平面的曲线与第一张图相似。
这可以通过 tidytext
包中的 reorder_within
+ scale_y_reordered
实现,如下所示:
- 通过
reorder_within
根据构面内的值重新排序 y 轴变量
- 使用
scale_y_reordered
- 也为您的 y 轴自由设置刻度。
library(ggplot2)
library(dplyr)
library(tidyr)
library(tidytext)
mtcars2 <- as_tibble(mtcars, rownames = 'car')
mtcars_long_numeric_with_mpg <- mtcars2 %>%
select(car, mpg, disp, hp, drat, wt, qsec) %>%
pivot_longer(names_to = 'names', values_to = 'values', 2:7) %>%
mutate(car = tidytext::reorder_within(car, values, names))
ggplot(mtcars_long_numeric_with_mpg, aes(x = values, y = reorder(car, values))) +
geom_point() +
tidytext::scale_y_reordered() +
facet_wrap(~names, scales = 'free')+
theme(text = element_text(size=6))
我使用 public mtcars 数据集得到了下图。我先转换成tibble,把汽车信息留成我可以用的栏目。
mtcars <- as_tibble(mtcars, rownames = 'car')
ggplot(mtcars, aes(x = mpg, y = reorder(car, mpg))) +
geom_point()
你可以看到我根据 mpg 的值重新排序了 y 轴的汽车。
我也有一个长数据框:
mtcars_numeric <- mtcars %>%
dplyr::select(car, mpg, disp, hp, drat, wt, qsec)
mtcars_long_numeric_with_mpg <- pivot_longer(mtcars_numeric, names_to = 'names', values_to = 'values', 2:7)
ggplot(mtcars_long_numeric_with_mpg, aes(x = values, y = reorder(car, values))) +
geom_point() + facet_wrap(~names, scales = 'free_x')+
theme(text = element_text(size=6))
当所有方面都不同时,如何将每辆车按价值排序?我希望重新排列 y 轴标签,使每个小平面的曲线与第一张图相似。
这可以通过 tidytext
包中的 reorder_within
+ scale_y_reordered
实现,如下所示:
- 通过
reorder_within
根据构面内的值重新排序 y 轴变量
- 使用
scale_y_reordered
- 也为您的 y 轴自由设置刻度。
library(ggplot2)
library(dplyr)
library(tidyr)
library(tidytext)
mtcars2 <- as_tibble(mtcars, rownames = 'car')
mtcars_long_numeric_with_mpg <- mtcars2 %>%
select(car, mpg, disp, hp, drat, wt, qsec) %>%
pivot_longer(names_to = 'names', values_to = 'values', 2:7) %>%
mutate(car = tidytext::reorder_within(car, values, names))
ggplot(mtcars_long_numeric_with_mpg, aes(x = values, y = reorder(car, values))) +
geom_point() +
tidytext::scale_y_reordered() +
facet_wrap(~names, scales = 'free')+
theme(text = element_text(size=6))