我使用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())
该图附在此处。
您会看到早晨,下午,晚上和夜晚文本无法完全显示。我尝试使用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"))
命令添加边距,但是没有用。关于如何解决这个问题的任何想法?
谢谢!
答案 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)))