【问题标题】:ggplot2: geom_polygon with no fillggplot2:没有填充的geom_polygon
【发布时间】:2014-10-16 10:19:42
【问题描述】:

我希望,你不需要数据来解决这个问题,因为我相信我只是犯了一个愚蠢的语法错误。以下代码:

ggplot()+
  geom_point(data=sites, aes(x=NMDS1, y=NMDS2, shape=group), colour="grey") +  
  geom_point(data=species, aes(x=NMDS1, y=NMDS2, color=phyla), size=3, shape=20) + scale_colour_manual(values=Pal1) +
  geom_segment(data = BiPlotscores, aes(x = 0, xend = NMDS1, y= 0, yend = NMDS2),
               arrow = arrow(length = unit(0.25, "cm")), colour = "black") +
  geom_text(data = BiPlotscores, aes(x = 1.1*NMDS1, y = 1.1*NMDS2, label = Parameters), size = 3) + coord_fixed()+
  theme(panel.background = element_blank()) +
  geom_polygon(data = hulls, aes(x=NMDS1, y=NMDS2, colour=phyla, alpha = 0.2))

导致以下结果:

(这不是最终产品 :))。 我想让多边形不填充,或者非常整齐地填充。当然,我不希望它们变灰。填充没有做任何事情,显然摆弄 alpha 也不会改变任何事情。

任何想法都非常受欢迎。非常感谢!

“Hulls”来自以下代码(在某处可以找到):

#find hulls
library(plyr)
find_hull <- function(df) df[chull(df$NMDS1, df$NMDS2), ]
hulls <- ddply(species , "phyla", find_hull)

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    如果您想要透明填充,请在 aes() 规范之外执行 fill=NA

    library(ggplot2)
    data <- data.frame(y=c(2,2,1), x=c(1,2,1))
    ggplot(data) + geom_polygon(aes(x=x, y=y), colour="black", fill=NA)
    

    【讨论】:

    • 不错!有没有办法用 qplot() 来做到这一点?还是只有 ggplot()+geom_... ?谢谢!
    【解决方案2】:

    这是一个老问题,但也许如果其他人遇到同样的问题:

    这里是从矩阵到漂亮的 nmds 图的代码:

    1) 创建虚拟矩阵

    MAT <- matrix( sample( 1:200, 100), nrow = 10, 
               dimnames = list( LETTERS[ 1:10]))
    

    2) 计算距离矩阵

    DIST <- dist(MAT)
    

    3) 计算MDS

    fit <- monoMDS(DIST, k=2)
    

    4) 提取点进行绘图

    fitp <- data.frame(fit$points)
    fitp$sample <- rownames(fitp)
    

    5) 添加分组因子

    fitp$group <- rep( c( "group1", "group2"), each=5)
    

    6) 定义查找船体的函数

    find_hull <- function(df) df[chull(df$MDS1, df$MDS2), ]
    

    7) 寻找船体

    hulls <- ddply(fitp, .(group), find_hull)
    

    8) 绘制数据

    ggplot( fitp, aes( x = MDS1, y = MDS2))+
      geom_point( data = fitp, aes( colour = group, shape = group, size = 4))+
      geom_text( data = fitp, aes( colour = group, label = sample, hjust = -0.7, size = 4))+
      geom_polygon( data = hulls, aes( alpha = 0.8, fill = group))+
      theme_bw()+
      guides(size=F,alpha=F)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2017-07-17
      • 2016-03-02
      相关资源
      最近更新 更多