在图表上方显示文本(ggplot2)

时间:2018-08-07 20:39:04

标签: r ggplot2 text

我使用cs[1].save()软件包制作了一个热图。我想使用ggplot2函数在图的顶部添加一些文本。由于某些原因,文本被某些部分“覆盖”。如何显示完整标签?

示例数据如下:

annotate

图形代码如下:

data <- data.frame("group" = c("grp1", "grp2", "grp3", "grp4"), "pct"  = runif(100, min = 0, max = 100))

  data <- data %>%
  group_by(group) %>%
  mutate(id = row_number())

该图附在此处。 enter image description here 您会看到早晨下午晚上夜晚文本无法完全显示。我尝试使用ggplot(data, aes(x=id, y=group, fill = pct)) + geom_tile() + theme_minimal() + annotate("text", x = 3, y = 4.7, size = 3.2,label = "Morning") + annotate("text", x = 7, y = 4.7, size = 3.2,label = "Afternoon") + annotate("text", x = 12, y = 4.7, size= 3.2, label = "Evening") + annotate("text", x = 17, y = 4.7, size = 3.2, label = "Night") + theme(plot.margin = unit(c(0.3, 0.45, 0.3, 0.45), "cm")) 命令添加边距,但是没有用。关于如何解决这个问题的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

plot.margin在图的外部设置边距,而您需要在图的内部留出更多空间。 @Camille有一个正确的主意:您需要扩展y轴。幸运的是,这很简单:只需将expand参数传递给scale_y_discrete

expand只会在轴的侧面增加额外的空间,因此数据是离散的(与使用ylim不同)无关紧要。如果您想更详细地定义多余的空间(例如,仅在顶部添加空间),可以将expand_scale传递到expand参数(感谢@Camille!)来定义多余的空间。在四个侧面分别它还允许您添加绝对或相对的空间量。语法有点怪异,因此请检查?expand_scale以查看参数名称:

ggplot(data, aes(x=id, y=group, fill = pct)) +
    geom_tile() +
    theme_minimal() +
    annotate("text", x = 3, y = 4.7, size = 3.2,label = "Morning") +
    annotate("text", x = 7, y = 4.7, size = 3.2,label = "Afternoon") +
    annotate("text", x = 12, y = 4.7, size=  3.2, label = "Evening") +
    annotate("text", x = 17, y = 4.7, size = 3.2, label = "Night") +
    scale_y_discrete(expand = expand_scale(mult = c(0, 0.3)))

enter image description here