将x轴标签置于分组条形图下方

时间:2016-01-25 18:04:06

标签: r plot

我有两个3x2矩阵A和B:

A:

          n2  n3
Part1     1   5
Part2     2   6
Part3     3   7

B:

          n2  n3   
Part1     5   1 
Part2     6   2   
Part3     7   3  

我想创建堆叠条,我通过以下方式完成:

  d1 <- read.csv("A.csv", header=T, dec=".",sep = " ")
  d1 <- subset(d1, select = c(n2, n3))

  d2 <- read.csv("B.csv", header=T, dec=".",sep = " ")
  d2 <- subset(d2, select = c(n2, n3))

  d <- cbind(d1[,1],d2[,1],d1[,2],d2[,2])

  barplot(d, col=c("lawngreen","firebrick","deepskyblue"),
          space=c(0,0,0.2,0), xaxt = "n", yaxt="n",ylim = c(0, 25))

  x_axis_range <- c(2,3)
  x_axis_labels <- c("2", "3")
  axis(1,at = x_axis_range, labels = x_axis_range)

  y_axis_range <- c(0,2,4,6,25) 
  y_axis_labels <- c("0","2","4","6","25") 
  axis(2,at = y_axis_range, labels = y_axis_labels, las=2)

它产生: enter image description here

但是,我希望2和3在每个分组的条形下显示为居中。我该怎么办?

1 个答案:

答案 0 :(得分:2)

将生成x轴的代码更改为

x_axis_range <- c(1, 3.2)
x_axis_labels <- c("2", "3")
axis(1,at = x_axis_range, labels = x_axis_labels)

enter image description here

创建宽度为1的条形图。此外,您需要将第二个和第三个条之间的空间设置为0.2。因此,条形的边框位于0,1,2.2,3.2。如果您希望将标签放在每个组的中心,则需要将它们放在1和3.2,这就是x_axis_range的上述定义。

我仍然将标签保留为2和3,但当然您可以将它们更改为您想要的任何内容。