【发布时间】:2019-03-13 04:43:22
【问题描述】:
是否可以创建一个没有数据的空 ggplot,但根据 R 中定义的值绘制图例?
所以创建的图像只是传说?
最初我认为我可以绘制数据并在其上打印一个白色矩形,但鉴于并非所有背景都是白色的,这是不现实的。我已经尝试过以下方法,但看起来 ggplot 想要一些数据框,因此我不得不添加一个。是否可以不添加或以其他方式创建空白图表?
library(ggplot2)
Outcome <- c("A", "B", "C", "D",'E')
shots <- rep('Label',5)
xc <-c(1:5)
yc <-c(1:5)
df <-data.frame(shots,Outcome,xc,yc)
p <- ggplot() +
geom_point(data = df, aes(x = xc, y = yc, fill = Outcome), shape=22, size=4,color = 'black', stroke=1) +
#Color and Legend
scale_fill_manual(values=c('chartreuse3','gainsboro','dodgerblue3','firebrick2','cornsilk4'),
labels = c("A", "B", "C", "D",'E'),
drop = FALSE) +
#Theme
theme(
panel.background = element_rect(fill = "transparent",colour = NA),
plot.margin = unit(c(0.1,0.1,0.1,0.1), "cm"),
plot.title = element_text(size = 14, hjust = 0.5, vjust = 1),
plot.background = element_rect(fill = "transparent", colour = NA),
axis.title=element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
legend.position = 'left',
legend.title=element_text(size=15),
legend.text=element_text(size=15),
legend.background = element_rect(fill = "transparent")
)
p
【问题讨论】:
-
一种可能性是使用
cowplot中的get_legend函数从图中提取图例 -
有没有办法从
cowplot保存get_legend? -
是的,例如
cowplot::get_legend(p); cowplot::ggdraw(legend) -
帖子中的一个答案被标记为与
cowplot重复:stackoverflow.com/a/44280801/5325862