Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将图例绘制到空绘图_R_Ggplot2_Legend - Fatal编程技术网

R 将图例绘制到空绘图

R 将图例绘制到空绘图,r,ggplot2,legend,R,Ggplot2,Legend,是否可以创建没有数据的空ggplot,但根据R中定义的值绘制图例 那么,创建的图像就是传说 起初我认为我可以绘制数据并在其上打印一个白色矩形,但考虑到并非所有背景都是白色,这是不现实的。我已经尝试了下面的方法,但是看起来ggplot需要一些数据帧,因此我不得不添加一个。是否可以不添加一个或以其他方式创建空白图形 library(ggplot2) Outcome <- c("A", "B", "C", "D",'E') shots <- rep('Label',5) xc <-

是否可以创建没有数据的空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
库(ggplot2)

结果您想要完整的绘图大小,但空间是空的吗?如果是这样的话,参数会有所帮助。使打印点完全透明(
alpha=0
),但图例点完全不透明(
alpha=1


palete\u color一种可能性是使用
cowplot
中的
get\u legend
功能从绘图中提取图例是否有办法从
cowplot
保存
get\u legend
?是的,例如
cowplot::get\u legend(p);cowplot::ggdraw(图例)
帖子上的一个答案,这被标记为does this with
cowplot
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)))