在R中的ggplot2中使用geom_bar图在类别之间创建空间和垂直线

时间:2019-02-27 11:41:05

标签: r ggplot2 geom-bar

我在R中有一个使用ggplot2的条形图,其中显示了不同类别的不同条形。因为某些柱形= 0,所以我想在不同类别之间建立一条垂直线,以便可以在视觉上更好地区分它们。

我已经尝试过通过panel.grid.major.xpanel.grid.minor.x参数添加它,但这没有用。如果我可以使用width

geom_bar参数来更改differnet类别的条形之间的距离,而不是改变所有条形之间的距离,这也可能会有所帮助。

例如。在下图中:我想在Cat 3的紫色条(5类)和Cat 4的蓝色条(1类)之间添加垂直线和空间。

Example plot

这是我的代码:

data <- categories.df
ggplot(data, aes(factor(Name, levels = c("Cat 1", "Cat 2", "Cat 3", "Cat 4", "Cat 5")), Count, fill = factor(SC_Class, levels = c("Class 1", "Class 2", "Class 3", "Class 4", "Class 5")))) +
    geom_bar(stat = "identity", position = position_dodge(width = 1), width = 0.8) +
    scale_fill_manual(values = c("#6C8EBF", "red", "#74767a", "orange","purple")) +
    labs(fill = "") +
    ylim(0,25) +
    xlab("Category") + ylab("Count") +
    theme(legend.position = c(1,1), legend.justification = c(1,1),
          axis.text.x = element_text(face = "bold", size=14),
          axis.text.y = element_text(face = "bold", size=14),
          axis.title.x = element_text(colour = "#6C8EBF", face = "bold", size =16),
          axis.title.y = element_text(colour = "#6C8EBF", face = "bold", size =16),
          panel.grid.major.y = element_line(size = 1, colour="#DAE8FC"),
          panel.grid.minor.y = element_line(colour="#DAE8FC"),
          panel.grid.major.x = element_blank(),
          panel.grid.minor.x = element_line(size = 1, colour="#DAE8FC"),
          plot.background = element_blank(),
          panel.background = element_blank(),
          panel.border = element_blank(),
          legend.text = element_text(size=12, face="bold")) 

如何使用R中的ggplot2在不同类别之间添加垂直线和空格?

1 个答案:

答案 0 :(得分:1)

对几何图形使用position_dodge参数。我在这里选择一个更简单的示例,但是您应该可以从那里对其进行概括。

test <- data.frame(
  a=1:9,
  b=rep(letters[1:3], 3),
  c=rep(letters[1:3], each=3)
)

ggplot(test, aes(y=a, x=b, group=c, fill=c)) + 
  geom_col(position="dodge") +
  geom_vline(xintercept = 1.5)

(基于此答案:ggplot side by side geom_bar()