R语言ggplot2条形图/柱状图geom_bar()

目录

    • 1. 最基本条形图
    • 2. 改变填充颜色与柱子宽度
    • 3. 改变横纵坐标轴名称、字体和字号
    • 4. 旋转坐标轴文字,或挪动其位置
    • 5. 调整图片背景与页边距
    • 6. 相关链接

1. 最基本条形图

假设名为dat的数据框(data.frame)包含两列,第一列是name,第二列是value。我们希望绘制一个横坐标为name,纵坐标为value的条形图

library(ggplot2)
ggplot(data = dat,aes(x = name, y = value)) + 
  geom_bar(stat = 'identity')

R语言ggplot2条形图/柱状图geom_bar()_第1张图片

下面对此图进行改进。

2. 改变填充颜色与柱子宽度

改变填充色与柱子宽度分别可以通过改变geom_bar函数里的参数fillwidth实现。如果我们给fill设定某一颜色,则所有柱子都会变为该颜色。

ggplot(data = dat,aes(x = name, y = value)) + 
  geom_bar(stat = 'identity', 
           fill = 'pink',   # 改变填充颜色
           width = 0.9) # 改变柱子宽度

R语言ggplot2条形图/柱状图geom_bar()_第2张图片

如果我们希望根据纵坐标值的正负修改填充色,也可以应用如下方法:

ggplot(data = dat,aes(x = name, y = value)) + 
  geom_bar(stat = 'identity', 
           fill = ifelse(dat$value>0,'gold','gray40'), # 根据y值的正负设置颜色
           width = 0.9)

R语言ggplot2条形图/柱状图geom_bar()_第3张图片

3. 改变横纵坐标轴名称、字体和字号

1.对于横纵坐标轴名称,可以使用labs函数。
2.对于横纵坐标轴名称与文字的字体,可以使用theme函数中的如下参数:

  • axis.title:横纵坐标标题
  • axis.text:横纵坐标文字

如果我们只想设置横坐标的标题(不设置纵坐标标题),可以设置axis.title.x参数。以此类推,也可以设置某一坐标轴的文字等等。相反地,如果想统一设置所有文本的格式,可以设置text参数。
对于如上提到的每一个参数,我们需要调用函数element_text,并改变它的sizeface等参数。
比如,在上图基础上做如下改动:

ggplot(data = dat,aes(x = name, y = value)) + 
  geom_bar(stat = 'identity', 
           fill = ifelse(dat$value>0,'gold','gray40'), # 根据y值的正负设置颜色
           width = 0.9) +
  # 横纵坐标轴名称
  labs(x = 'Name', y = 'Value')+
  theme(axis.title =  element_text(size=15,face = "bold"), # 调整横纵坐标轴标题字号并设置为粗体
        axis.text.x =   element_text(size=13))  # 调整横坐标文字字号

R语言ggplot2条形图/柱状图geom_bar()_第4张图片

4. 旋转坐标轴文字,或挪动其位置

如果横坐标文字太长,我们可以将其旋转一定角度,也可以调整其位置。方法为设置上文提到的element_text函数中的anglehjust参数。例如:

ggplot(data = dat,aes(x = name, y = value)) + 
  geom_bar(stat = 'identity', 
           fill = ifelse(dat$value>0,'gold','gray40'), # 根据y值的正负设置颜色
           width = 0.9) +
  # 横纵坐标轴名称
  labs(x = 'Name', y = 'Value')+
  theme(axis.title =  element_text(size=12,face = "bold"),
        axis.text.x =   element_text(angle=90,  # 横坐标文字旋转九十度
                                     hjust = 1, # 调整横坐标文字位置
                                     size=15))  # 调整横坐标文字字号

R语言ggplot2条形图/柱状图geom_bar()_第5张图片

5. 调整图片背景与页边距

最后为了美观起见,可以删除ggplot2自带的灰色背景与边框,也可以设置页边距如下。

ggplot(data = dat,aes(x = name, y = value)) + 
  geom_bar(stat = 'identity', 
           fill = ifelse(dat$value>0,'gold','gray40'), # 根据y值的正负设置颜色
           width = 0.9) +
  # 横纵坐标轴名称
  labs(x = 'Name', y = 'Value')+
  theme(panel.grid.major =element_blank(),  # 去除边框
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        axis.title =  element_text(size=12,face = "bold"),
        axis.text.x =   element_text(angle=90,  # 横坐标文字旋转九十度
                                     hjust = 1, # 调整横坐标文字位置
                                     size=15),  # 调整横坐标文字字号
        plot.margin=unit(rep(3,4),'lines'))     # 设置图片边距  

R语言ggplot2条形图/柱状图geom_bar()_第6张图片

6. 相关链接

  • 删除ggplot2背景与网格线的简便做法;
  • 设置中英文格式;
  • 分组条形图以及其他颜色设置方法

希望大家可以用ggplot2画出自己喜欢的图!

你可能感兴趣的:(R语言,统计学,R-ggplot,ggplot2,数据可视化,r语言,统计学,数据分析)