R语言ggplot2条形图/柱状图geom | 您所在的位置:网站首页 › 怎么填充柱状图颜色 › R语言ggplot2条形图/柱状图geom |
目录
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')下面对此图进行改进。 2. 改变填充颜色与柱子宽度改变填充色与柱子宽度分别可以通过改变geom_bar函数里的参数fill与width实现。如果我们给fill设定某一颜色,则所有柱子都会变为该颜色。 ggplot(data = dat,aes(x = name, y = value)) + geom_bar(stat = 'identity', fill = 'pink', # 改变填充颜色 width = 0.9) # 改变柱子宽度如果我们希望根据纵坐标值的正负修改填充色,也可以应用如下方法: ggplot(data = dat,aes(x = name, y = value)) + geom_bar(stat = 'identity', fill = ifelse(dat$value>0,'gold','gray40'), # 根据y值的正负设置颜色 width = 0.9)1.对于横纵坐标轴名称,可以使用labs函数。 2.对于横纵坐标轴名称与文字的字体,可以使用theme函数中的如下参数: axis.title:横纵坐标标题axis.text:横纵坐标文字如果我们只想设置横坐标的标题(不设置纵坐标标题),可以设置axis.title.x参数。以此类推,也可以设置某一坐标轴的文字等等。相反地,如果想统一设置所有文本的格式,可以设置text参数。 对于如上提到的每一个参数,我们需要调用函数element_text,并改变它的size、face等参数。 比如,在上图基础上做如下改动: 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)) # 调整横坐标文字字号如果横坐标文字太长,我们可以将其旋转一定角度,也可以调整其位置。方法为设置上文提到的element_text函数中的angle和hjust参数。例如: 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)) # 调整横坐标文字字号最后为了美观起见,可以删除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')) # 设置图片边距希望大家可以用ggplot2画出自己喜欢的图! |
CopyRight 2018-2019 实验室设备网 版权所有 |