ggplot2图例仅显示与legend.key属性的部分边框

时间:2015-10-10 02:48:09

标签: r ggplot2 legend

我尝试使用ggplot2创建图表,但我不明白为什么legend.key属性只在图例的一部分周围放置边框。见下面的最小工作示例。有关修复的任何建议吗?这里提供的示例似乎工作正常(https://github.com/hadley/ggplot2/wiki/Legend-Attributes#legendkey-rect)。

set.seed(12)
xy <- data.frame(x=c(rep(LETTERS[1], times=25), rep(LETTERS[2], times=25)), 
                 y=rep(LETTERS[1:25], times=2),
                 type = sample(c(-2,-1,0,1,2), 50, replace=T))
xy$type <- factor(xy$type, c(-2, -1, 0, 1, 2))

ggplot(xy, aes(x=x, y=y, fill=type, height=0.95)) + 
    geom_tile() +
    scale_fill_manual(values = c("#323D8D", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FF0000"), 
                      na.value="#BEBEBE") +
    scale_x_discrete(expand=c(0,0.51)) +
    theme(legend.key = element_rect(colour="black")) +
    theme(axis.ticks.x = element_blank()) +
    theme(axis.ticks.y = element_blank()) +
    theme(panel.grid.major.y=element_blank()) +
    theme(panel.grid.major.x=element_blank()) +
    theme(panel.grid.minor.y=element_blank()) +
    theme(panel.grid.minor.x=element_blank()) +
    theme(panel.background = element_rect(fill="#000000"))

enter image description here

1 个答案:

答案 0 :(得分:1)

我不知道为什么,但它似乎与在Rstudio中将图像渲染到屏幕有关(我假设您在Rstudio中工作)。

您需要做的就是使用ggsave("plot.png")并按预期绘制线条。此外,如果您保存为pdf,您的图例将具有所需的行。

而且,正如@jeremycg所说,如果你想让线条显示在屏幕上,你应该用legend.key = element_rect(colour="black", size=1))(在我的屏幕上尺寸= 1就足够了)使它们变得更粗。

最后:你不需要每次都输入主题命令,你可以使用“,”分隔它们,如:

 theme(legend.key = element_rect(colour="black"),
       axis.ticks.x = element_blank(),
       axis.ticks.y = element_blank())

我没有测试它,但我认为这样会更快。