ggplot2做蝴蝶图

使用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()

相关

下一页
上一页
comments powered by Disqus