使用ggplot2
画蝴蝶图.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.1
## -- Attaching packages ------------------------------------------------------------------------ tidyverse 1.2.1 --
## v ggplot2 3.2.1 v purrr 0.3.2
## v tibble 2.1.3 v dplyr 0.8.3
## v tidyr 1.0.0 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## Warning: package 'ggplot2' was built under R version 3.6.1
## Warning: package 'tibble' was built under R version 3.6.1
## Warning: package 'tidyr' was built under R version 3.6.1
## Warning: package 'dplyr' was built under R version 3.6.1
## -- Conflicts --------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
##构建示例数据
df <-
mtcars %>%
select(carb, wt, gear) %>%
filter(gear == 3 | gear == 4) %>% ##只选择gear位3或者4的车
group_by(carb, gear) %>%
summarise(mean = mean(wt)) %>% #计算每类车的wt的平均值
ungroup() %>%
mutate(carb = factor(carb, levels = unique(carb)),
gear = factor(gear, levels = unique(gear)))
##观察数据
df
## # A tibble: 7 x 3
## carb gear mean
## <fct> <fct> <dbl>
## 1 1 3 3.05
## 2 1 4 2.07
## 3 2 3 3.56
## 4 2 4 2.68
## 5 3 3 3.86
## 6 4 3 4.69
## 7 4 4 3.09
##这一步用来将某类(用于分组的变量)的值设置为负值
df <-
df %>%
mutate(mean = case_when(
gear == 4 ~ -1*mean,
gear == 3 ~ mean
)
)
df %>%
ggplot(aes(x = carb, mean, fill = gear)) +
geom_bar(stat = "identity", width = 0.5) +
labs(x = "Carb", y = "WT mean") +
scale_y_continuous(breaks = c(-2, 0, 2, 4), labels = c(2, 0 ,2, 4)) +
theme_bw() +
coord_flip()