无法使用stat_count将geom_point添加到线图

时间:2018-12-21 08:02:05

标签: r ggplot2

我有一个df,在其中使用stat_count绘制了漂亮的线条图,但是当我尝试添加geom_point时,它将不起作用。

没有最后一部分(geom_point(size=2)),它会产生线条图,但出现错误:

  

不知道如何为类型的对象自动选择比例   功能。默认为连续。错误:列y必须为1d   原子向量或列表

df <- data.frame("id" = c(1, 1, 1, 2, 2, 3, 3, 3, 4, 4), 
                 "bowl" = c("red", "red", "red","green", "green", "green",  
                            "green", "green", "red", "red"),
                 "year"=c(2001:2003, 2002:2003, 2001:2003, 2001:2002))

library(dplyr)
library(ggplot2)
df %>% 
  ggplot(aes(x=year, y=count, colour=bowl)) +
  stat_count(geom = "line", 
             aes(y=..count..))+
  geom_point(size=2) 

我怀疑只需要进行一点调整,但是我似乎无法自己找到它。

1 个答案:

答案 0 :(得分:1)

有两种可能的方法:

  1. 使用stat_count()并指定geom
  2. 分别使用geom_line()geom_point()并指定stat

position的默认值有所不同,它将创建不同的图。

1。堆积的计数图(总计数)

Z.Lin所述,

library(ggplot2)
ggplot(df, aes(x = year, y = stat(count), colour = bowl)) + 
  stat_count(geom = "line") + 
  stat_count(geom = "point")

将创建计数的堆积线和点图,即每年的记录总数(与bowl无关):

enter image description here

version 3.0.0 of gplot2开始,可以将新的stat()函数用于美学计算变量。因此,stat(count)取代了..count..

同一情节是由创建的

ggplot(df, aes(x = year, y = stat(count), colour = bowl)) + 
  geom_line(stat = "count", position = "stack") + 
  geom_point(stat = "count", position = "stack")

但是我们必须明确指定计数必须堆叠。

2。颜色计数的线和点图

如果我们想分别显示每个bowl值的每年计数,可以使用

ggplot(df, aes(x = year, y = stat(count), colour = bowl)) + 
  geom_line(stat = "count") + 
  geom_point(stat = "count")

为每种颜色生成线和点图。

enter image description here

这也可以通过

实现
ggplot(df, aes(x = year, y = stat(count), colour = bowl)) + 
  stat_count(geom = "line", position = "identity") + 
  stat_count(geom = "point", position = "identity")

但是知道我们必须明确地指定 not 进行堆叠。