R语言画条形图barplot

条形图通过垂直的或水平的条形展示了类别型变量的分布(频数)。函数 barplot() 函数的格式为:barplot(height, width = 1, space = NULL, names.arg = NULL, legend.text = NULL, beside = FALSE, horiz = FALSE, density = NULL, angle = 45, col = NULL, border = par("fg"), main = NULL, sub = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, xpd = TRUE, log = "", axes = TRUE, axisnames = TRUE, cex.axis = par("cex.axis"), cex.names = par("cex.axis"), inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0, add = FALSE, ann = !add && par("ann"), args.legend = NULL, ...)

虽然控制图形的参数有很多,但是这里主要讲解常用的参数:

1、height

  • 数据集是一个向量,则height值为每个柱子的高度,height的数量为柱子的个数。
  • 数据集为矩阵,此时用于画堆积柱状图。

注:若要绘制的类别型变量是一个因子或者有序因子,可以使用plot()绘制即可。

#向量
barplot(height = 1:5) 
#矩阵
data <- cbind(a = 1:3, b = 1:3) #matrix
barplot(data)

2、width

用于调节每个柱子的宽度,默认的柱形宽度为1。若参数没有柱形数量多,则参数循环使用。

barplot(1:8,width =1:2) #循环使用参数
barplot(1:8,width = 1:8) #设置柱形宽度比例

3、space

柱形之间的间隔,默认是0.2。

barplot(1:5,space = 1)
barplot(1:5,width = 1:5,space = 5:1)
barplot(1:5,space = 1:3)

4、names.arg

每个柱子下面的标记,当height 为 vector 时,默认的标记为向量的names 属性; 当height 为 matrix 是,默认为 matrix 的colnames 属性。

barplot(1:3,names.arg = c("A","B","C"))

5、 legned.text :

图例文字,但是只有当矩阵时才有用,默认是变量名。

  • 第一种指定是否需要图例文字,为逻辑值。
  • 第二种指定图例文字内容。
data <- cbind(a = 1:4, b = 1:4) #创建矩阵
rownames(data) <- c("A", "B", "C", "D")
barplot(data, legend.text = TRUE) #第一种
barplot(data, legend.text = c("1","2","3","4")) #第二种

6、besides

如果 height 是一个矩阵而不是一个向量,则绘图结果将是一幅堆砌条形图或分组条形图。若 beside=FALSE (默认值),则矩阵中的每一列都将生成图中的一个条形,各列中的值将给出堆砌的“子条”的高度。若 beside=TRUE ,则矩阵中的每一列都表示一个分组,各列中的值将并列而不是堆砌。

#堆砌图
data <- cbind(a = 1:3, b = 1:3) #matrix
barplot(data)
#分组条形图
data <- cbind(a = 1:3, b = 1:3) #matrix
barplot(data,beside = TRUE)
library(vcd)
library(RColorBrewer)
counts <- table(Arthritis$Improved,Arthritis$Treatment)
counts
#堆砌条形图
barplot(counts,
        main="Stacked Bar Plot",
        xlab="Treatment", ylab="Frequency",
        col = RColorBrewer::brewer.pal(3,"Set2"), #复习一下R包
        legend.text=rownames(counts))

#分组条形图
barplot(counts,
        main="Grouped Bar Plot",
        xlab="Treatment", ylab="Frequency",
        col = RColorBrewer::brewer.pal(3,"Set1"),
        legend.text=rownames(counts), beside=TRUE)

7、horiz

逻辑值,默认FALSE , 当值为TRUE 时,将x轴和y轴转置

barplot(1:4)
barplot(1:4,horiz = TRUE)

8、density

设置柱形用线填充,控制线条的密度

barplot(1:4,density = 1)
barplot(1:4,density = 2)
barplot(1:4,density = 3)

9、angle

控制线条的角度,但是必须和density一起使用。

barplot(1:4,angle = 30) #无作用
barplot(1:4,density = 1,angle = 30)
barplot(1:4,density = 1,angle = 45)

10、col

柱形的填充色,默认为黑色

barplot(1:4,col = "red") #柱形统一颜色
library(RColorBrewer) 
barplot(1:4,col = brewer.pal(4,"Set1")) #柱形的不同颜色

11、border

柱子边框的颜色, 默认为 black。 当border = NA时,表示没有边框

library(RColorBrewer)
barplot(1:4,col = brewer.pal(4,"Set1"),border = "red")
barplot(1:4,col = brewer.pal(4,"Set2"),border = brewer.pal(4,"Set1"))
barplot(1:4,col = brewer.pal(4,"Set1"),border = NA) #无边框

12、main、sub

图形主标题和副标题。

barplot(1:4,main = "主标题",sub = "副标题")

13、xlab、ylab

坐标轴标签

barplot(1:4,xlab = "X轴",ylab = "Y轴")

14、xlim、ylim

控制坐标轴的范围

barplot(1:4,ylim = c(0,5))

15、axes

逻辑值,控制是否显示轴线,默认为添加轴线

barplot(1:4)
barplot(1:4,axes = FALSE)

16、axisnames

逻辑值,是否显示柱形的标签,默认为显示(TRUE)

data <- cbind(a = 1:4, b = 1:4)
barplot(data, axisnames = F)
barplot(data, axisnames = T)

17、offset

设置柱子的起始位置在y轴上的位置, 默认值为0

barplot(1:4,offset = 1)
barplot(1:4,offset = 2)

barplot()函数还有需要不常用的参数,如需了解可以help("barplot")即可。

18、cex.names

用于调节坐标轴标题的大小,和names.arg配合使用。

barplot(1:4,names.arg = c("a","b","c","d"),cex.names = 2)