我尝试使用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"))
答案 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())
我没有测试它,但我认为这样会更快。