我有一个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)
我怀疑只需要进行一点调整,但是我似乎无法自己找到它。
答案 0 :(得分:1)
有两种可能的方法:
stat_count()
并指定geom
geom_line()
和geom_point()
并指定stat
position
的默认值有所不同,它将创建不同的图。
如Z.Lin所述,
library(ggplot2)
ggplot(df, aes(x = year, y = stat(count), colour = bowl)) +
stat_count(geom = "line") +
stat_count(geom = "point")
将创建计数的堆积线和点图,即每年的记录总数(与bowl
无关):
从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")
但是我们必须明确指定计数必须堆叠。
如果我们想分别显示每个bowl
值的每年计数,可以使用
ggplot(df, aes(x = year, y = stat(count), colour = bowl)) +
geom_line(stat = "count") +
geom_point(stat = "count")
为每种颜色生成线和点图。
这也可以通过
实现ggplot(df, aes(x = year, y = stat(count), colour = bowl)) +
stat_count(geom = "line", position = "identity") +
stat_count(geom = "point", position = "identity")
但是知道我们必须明确地指定 not 进行堆叠。