在ggplot中的geom_point中删除了无缺失的行

时间:2016-01-29 13:40:22

标签: r ggplot2

为什么声称此数据中的行在图中缺失并被删除,即使x-scale没有超出范围?我试图将xlim包括在内但没有成功。我在这里想念什么?这是图enter image description here Gp2(geom_point)未包含在图中。我使用的代码如下:

        df1 <- data.frame(x=c(2,4:8),
                          y=c(1.030928,4.123711,3.092784,8.247423,9.278351,4.123711))
        df2 <- data.frame(x=3:8,
                          y=c(1.700680,1.360544,4.081633,3.401361,3.061224,9.183673))

         require(ggplot2)

         ggplot(NULL, aes(x=x, y=y)) +
            geom_bar(data = df1, aes(fill="Gp1", shape="Gp1"),
                     stat= "identity") +
            geom_point(data = df2, stat= "identity", size = 5,
                       aes(shape="Gp2", fill="Gp2")) +
            ylab("%") + xlab("grades") +
            ggtitle("Test figure") +
            scale_shape_manual(values = c(23, NA)) +
            scale_fill_manual(values = c("#6699CC","#000099")) +
            guides(fill = guide_legend(reverse = TRUE),
                   shape = guide_legend(override.aes = list(shape=0), reverse = TRUE)) 

这会发出警告信息: 删除了包含缺失值的6行(geom_point)。

1 个答案:

答案 0 :(得分:0)

逐个运行代码我们可以很容易地发现scale_shape_manual是罪魁祸首,在此之前的所有内容都可以找到。 (如果您已经制作了 minimal 示例,那么您很容易就会发现......)

您告诉ggplot geom_point的所有形状都应该是Gp2,这是您映射的第二个形状。因此,它将查看values中的第二个条目,并找到NA。所以你自己告诉ggplot它应该给所有点NA形状。

(请注意,您在Gp1中映射了形状geom_bar,但geom_bar并未采用这种美学。)