【问题标题】:Draw a Legend to an empty ggplot [duplicate]为空的ggplot绘制图例[重复]
【发布时间】: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

标签: r ggplot2 legend


【解决方案1】:

你想要完整的地块大小,但空间是空的吗?如果是这样,override.aes 参数会有所帮助。使绘制点完全透明 (alpha=0),但图例点完全不透明 (alpha=1)。

palette_color <- c("A"='chartreuse3', "B"='gainsboro', "C"='dodgerblue3', "D"='firebrick2', "E"='cornsilk4')

ggplot(df, aes(x = xc, y = yc, fill = Outcome)) +
  geom_point(shape=22, alpha=0) +
  # geom_blank() +
  scale_fill_manual(values=palette_color, drop=FALSE) +
  guides(fill = guide_legend(override.aes = list(alpha=1))) 

我喜欢你的主题修改,但我把它们留在这里以便更清楚地绘制哪些元素。

如果这不是您所要求的,是 geom_blank() 解决的问题吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2020-10-22
    • 1970-01-01
    • 2021-01-22
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多