Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 将更改的几何图形从对象传递到其他ggplot_R_Ggplot2_Density Plot_Grob - Fatal编程技术网

R 将更改的几何图形从对象传递到其他ggplot

R 将更改的几何图形从对象传递到其他ggplot,r,ggplot2,density-plot,grob,R,Ggplot2,Density Plot,Grob,我先编一个情节 df <- data.frame(x = c(1:40, rep(1:20, 3), 15:40)) p <- ggplot(df, aes(x=x, y = x)) + stat_density2d(aes(fill='red',alpha=..level..),geom='polygon', show.legend = F) 这不起作用,但是有没有办法做到这一点 编辑:在有多个组时进行编辑: df <- data.frame(x

我先编一个情节

   df <- data.frame(x = c(1:40, rep(1:20, 3), 15:40))
    p <- ggplot(df, aes(x=x, y = x)) +
      stat_density2d(aes(fill='red',alpha=..level..),geom='polygon', show.legend = F)
这不起作用,但是有没有办法做到这一点


编辑:在有多个组时进行编辑

df <- data.frame(x = c(1:40, rep(1:20, 3), 15:40), group = c(rep('A',40), rep('B',60), rep('C',26)))
p <- ggplot(df, aes(x=x, y = x)) +
  stat_density2d(aes(fill=group,alpha=..level..),geom='polygon', show.legend = F)

q <- ggplot_build(p)
dens <- q$data[[1]]     
dens$y <- dens$y - dens$x

ggplot(df, aes(x=x, y =1)) + 
  geom_point(aes(col = group), alpha = 0.3) +
  geom_polygon(data = dens, aes(x, y, fill = fill, group = piece, alpha = alpha)) +
  scale_alpha_identity() +
  guides(fill = F, alpha = F)

像这样?可以绘制由
geom\u density
绘制的形状的变换。但这和操纵底层密度不太一样

ggplot(df, aes(x=x, y =1)) + 
  geom_point(alpha = 0.3) +
  geom_polygon(data = dens, aes(x, y, fill = fill, group = piece, alpha = alpha)) +
  scale_alpha_identity() +
  guides(fill = F, alpha = F)


编辑-OP现在有多个组。我们可以用下面的代码来绘制这些图,这产生了一个具有令人质疑的实用性的艺术图。它符合您的建议,但我建议,如果您正在寻找具有代表性的输出,那么转换基础数据并对其进行总结会更有成效

ggplot(df, aes(x=x, y =1)) + 
  geom_point(aes(col = group), alpha = 0.3) +
  geom_polygon(data = dens, aes(x, y, fill = group, group = piece, alpha = alpha)) +
  scale_alpha_identity() +
  guides(fill = F, alpha = F) +
  theme_minimal()

哇,谢谢你,乔恩,这比我现在做的好多了!我现在构建了对象并编辑了原始对象,重建了它并更改了轴等。我用了15行代码。多个组也可以这样做吗(请参见编辑)?没有收到编辑通知,感谢您对多组图的建议,但是填充似乎与原始不一致,当
指南(fill=T,alpha=T)
有多个填充颜色而不是A、B和C的三种颜色(请参阅我的编辑以查看它在我的数据集上的外观)几乎使用
几何多边形(data=dens,aes)时可以看到这一点(x,y,fill=fill,group=group,alpha=alpha))
但是颜色的顺序似乎会改变几何多边形(数据=密度,aes(x,y,fill=group,group=parte,alpha=alpha))+?
ggplot(df, aes(x=x, y =1)) + 
  geom_point(alpha = 0.3) +
  geom_polygon(data = dens, aes(x, y, fill = fill, group = piece, alpha = alpha)) +
  scale_alpha_identity() +
  guides(fill = F, alpha = F)
ggplot(df, aes(x=x, y =1)) + 
  geom_point(aes(col = group), alpha = 0.3) +
  geom_polygon(data = dens, aes(x, y, fill = group, group = piece, alpha = alpha)) +
  scale_alpha_identity() +
  guides(fill = F, alpha = F) +
  theme_minimal()