将垂直分隔符和标签添加到R barplot

时间:2017-06-27 17:10:28

标签: r plot ggplot2 bar-chart facet

我有以下数据框,我从中制作条形图。然后,我尝试添加具有垂直线的组分隔符,并通过创建新的x轴在这些线之间放置标签:

Group = c("1_1", "1_2", "1_3", "2_1", "2_2", "3_1", "3_2", "3_3", "3_4")
Value = as.numeric(c("-1.23", "2.34", "0.56", "1.87", "-2.40", "5.54", "-0.98", "-2.31", "6"))
data = data.frame(Group, Value)
data
Group   Value
1_1   -1.23
1_2   2.34
1_3   0.56
2_1   1.87
2_2   -2.40
3_1   5.54
3_2   -0.98
3_3   -2.31
3_4   6.0

barplot(data$Value, xaxs="i",xaxt="n")

我正在尝试将垂直线添加为组分隔符:

。在“1_3”和“2_1”之间

。在“2_2”和“3_1”之间

并放置标签:

。原点和第一个分隔符之间的“1”

。第一个和第二个分隔符之间的“2”

。第二个分隔符和轴终点之间的“3”

例如,在制作散点图时,它可以在连续轴上正常工作,但它不适用于分类轴。 有没有办法根据他们在情节中的位置将组类别转换为数字?

2 个答案:

答案 0 :(得分:2)

我认为这就是你所描述的:

connmanctl config ethernet_985dad375f63_cable --ipv4 manual 192.168.1.101 255.255.255.0 192.168.1.1

答案 1 :(得分:2)

您可以使用ggplot2包来实现此目的:

library(ggplot2)

ggplot(data=df, aes(x=Group, y=Value)) +
  geom_bar(stat="identity") + 
  scale_x_discrete(breaks = df$Group, labels = substring(df$Group, 3, 3),
                                                                      expand=c(0.1,0.1)) +
  facet_grid(~ substring(Group, 1, 1), space="free_x", scales="free_x", switch="x") + 
  theme_bw() +
  theme(strip.placement = "outside",
        strip.background = element_rect(fill=NA,colour="grey50"),
        panel.spacing=unit(0,"cm"))

这将绘制:

enter image description here

如果您不想要子组x轴标签,只需添加labels = NULL代替labels = substring(Group, 3, 3)

<强> 数据:

  df <- structure(list(Group = structure(1:9, .Label = c("1_1", "1_2",  
  "1_3", "2_1", "2_2", "3_1", "3_2", "3_3", "3_4"), class = "factor"),  
      Value = c(-1.23, 2.34, 0.56, 1.87, -2.4, 5.54, -0.98, -2.31,  
      6)), .Names = c("Group", "Value"), row.names = c(NA, -9L), class = "data.frame")