分享

R语言 | 第15期.ggplot2柱状图系列

 新用户4064dVjo 2023-07-22 发布于北京

柱状图用于显示一段时间内的数据变化或显示各项之间的比较情况。在柱形图中,有序或无序变量映射到横坐标,数值型变量映射到纵坐标。本期我们将使用ggplot2中的geom_bar()函数绘制一系列柱状图,包括单数据系列柱状图、多数据系列柱状图、堆积柱状图和百分比堆积柱状图。

一、单数据系列柱状图
library(ggplot2)
## 创建数据
mydata <- data.frame(Cut = c('Fair','Good','Very good','Premium','Ideal'),
                      Price = c(4300, 3800, 3950, 4700, 3500))

## 根据Price, 降序排列
order <- sort(mydata$Price, index.return = T ,decreasing = T)
mydata$Cut <- factor(mydata$Cut, levels = mydata$Cut[order$ix])

## width:柱状图宽度,colour:边的颜色,fill:填充调颜色,size:边的粗细,alpha:填充颜色的透明度
ggplot(data = mydata, aes(x = Cut, y = Price))+
  geom_bar(stat = 'identity', width = 0.8, colour = 'black', size = 0.25, fill = '#FC4E07', alpha = 1)

二、多数据系列柱状图堆积柱状图

library(tidyverse)
## 创建数据
mydata <- data.frame(Catergory = c('Temporary Stream','Permanent Stream','Lake'),
                     y1996 = c(7.67,4.02,3.95),
                     y1997 = c(5.84,6.45,6.76))
## 根据1996排序
order <- sort(mydata$y1996, index.return = T, decreasing = T)
mydata$Catergory <- factor(mydata$Catergory, levels = mydata$Catergory[order$ix])

## 宽转长
mydata <- pivot_longer(mydata, cols = c(y1996,y1997), names_to = 'year', values_to = 'value')

ggplot(data = mydata, aes(x = Catergory, y = value, fill = year))+
  geom_bar(stat = 'identity', width = 0.8, colour = 'black', position = position_dodge(),size = 0.25)

三、堆积柱状图

## 创建数据
data <- data.frame(species = c(rep("sorgho",3),rep("poacee",3),rep("banana",3),rep("triticum" , 3)),
                   condition = rep(c("normal","stress","Nitrogen"),4),
                   value = abs(rnorm(12,0,15)))
## 排序
cal <- data %>%
  group_by(species) %>%
  summarise(sum = sum(value)) %>%
  arrange(desc(sum))
order <- cal$species
data <- data %>%
  mutate(species = fct_relevel(species,order))

ggplot(data, aes(x=species, y=value, fill=condition)) + 
    geom_bar(position="stack"stat="identity")

四、百分比堆积柱状图

## 创建数据
data <- data.frame(species = c(rep("sorgho",3),rep("poacee",3),rep("banana",3),rep("triticum",3)),
                   condition = rep(c("normal","stress","Nitrogen"),4),
                   value = abs(rnorm(12,0,15)))
 
ggplot(data, aes(x=species, y=value, fill=condition)) + 
    geom_bar(position="fill"stat="identity")

这就是本期的全部内容啦,你学会了吗?大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话栏目中提出,我们会尽快回复!

写在最后



“观科研”(点击进一步了解我们吧)是由一群北京协和医学院(清华大学医学部)的博士开创的公众号,初心是让医学科研有迹可循,帮助一线的医学科研人员更快地成长,希望大家支持与关注!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多