如何将ggplot2图例移动到绘图底部并将其水平旋转?
示例代码:
library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend())
Run Code Online (Sandbox Code Playgroud)
期望的(近似)结果:

我的问题是这个问题的延伸。请注意,我使用的是 2.3.0 版本,该版本可在github 上使用,但尚未在 CRAN 上使用。
library(ggplot2)
df <- data.frame("Categories" = rep(c("A", "B", "C"), 3),
"values" = c(rep(0.39, 3), rep(0.37, 3), rep(0.24, 3)),
"X" = 1:9)
ggplot(df, aes(x = X, y = values, colour = Categories)) +
geom_line() +
theme(
legend.position = "top",
legend.spacing.x = unit(2, unit = "cm"),
legend.title = element_blank()
)
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了这个图。
我想将图例标签(A、B、C)移近它们对应的图标,如下面的红色箭头所示,这将在图例类别之间创建更多空白。我该怎么做?
我有一个 ggplot2 并且正在尝试增加图例项之间的间距。
下面的代码产生下面的图:
library(tidyverse)
library(ggplot2)
year <- 2005:2015
variablea <- 1000:1010
variableb <- 1010:1020
df = data.frame(year, variablea, variableb)
df %>% gather(variable, value, -year) %>%
ggplot(aes(x = year, y = value, colour = variable, linetype = variable)) +
geom_line() +
theme(
legend.key=element_blank()
,legend.text=element_text(size=12)
,legend.position="bottom"
,legend.title=element_blank()
,panel.background = element_rect(fill = "transparent") # bg of the panel
,plot.background = element_rect(fill = "transparent") # bg of the plot
)
Run Code Online (Sandbox Code Playgroud)
然而,底部的图例项目之间的差距太近了,不舒服。
我试图从其他问题中调整解决方案,但它们不起作用。
例如,+ guides(fill=guide_legend(keywidth=0.1, keyheight=0.1,
default.unit="inch"))按照有没有办法更改 ggplot2 中图例项之间的间距中的建议添加?不起作用,因为它是一个折线图,所以这些线只是扩展以填充额外的空间。我也尝试了链接问题中建议的第二种解决方案,但它似乎没有改变(目前我正在使用+ …