使用 geom_path 和 geom_point 时点与线断开连接。已修复但我没有提供摘要函数,默认为 `mean_se()
Dots disconnected from lines when using geom_path and geom_point .Fixed but I get No summary function supplied, defaulting to `mean_se()
我有以下数据:
structure(list(Expo = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L), .Label = c("DC", "DI"), class = "factor"), Quail = c(5L,
6L, 16L, 17L, 28L, 29L, 30L, 53L, 54L, 11L, 12L, 46L, 48L, 60L,
11L, 48L, 6L, 5L, 6L, 18L, 29L, 30L, 53L, 11L, 36L, 46L, 47L,
60L, 11L, 4L, 5L, 6L, 16L, 17L, 28L, 29L, 30L, 52L, 53L, 54L),
Segment = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Position = c(1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L), Freq = c(0.034496, 0.034845, 0.031079,
0.020761, 0.037311, 0.047204, 0.062257, 0.100617, 0.022637,
0.587758, 0.470607, 0.037855, 0.02897, 0.034457, 0.87815,
0.022788, 0.169897, 0.058831, 0.116039, 0.032077, 0.081132,
0.09126, 0.051852, 0.896703, 0.09873, 0.054908, 0.027505,
0.50293, 0.975181, 0.03713, 0.092243, 0.028103, 0.044125,
0.057707, 0.091152, 0.085498, 0.130286, 0.030099, 0.049717,
0.070069), day = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 7L, 7L, 7L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 1L, 1L, 8L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
)), row.names = c(NA, -40L), class = "data.frame")
当我运行
ggplot(Expo.Shared.PB1, aes(x=as.numeric(day), y=Freq, color = as.character(Quail))) +
geom_path()+
geom_point() +
facet_grid(Expo~.)
它给了我以下(不正确的)情节。
我解决了将 stat="summary" 添加到两个 geoms 的问题,但在这样做时它给了我以下消息:
未提供汇总函数,默认为 `mean_se()
ggplot(Expo.Shared.PB1, aes(x=as.numeric(day), y=Freq, color = as.character(Quail))) +
geom_path(stat = "summary")+
geom_point(stat = "summary") +
facet_grid(Expo~.)
输出:
剧情好像是我要找的,现在:
stat="summary" 到底在做什么?绘制的值是否根据原始值进行了修改?可以忽略该消息吗? (我确定不是)。
好的。我想我看到了这个问题。 [ 将“正确”的图表与“不正确”的图表进行比较很有帮助! :)]
geom_path
简单地“连接点”。它获取数据集中的点,并按照它们出现的顺序将它们连接起来。我的第一个想法是您的数据集没有按您预期的方式排序。所以,以Quail == 11
为例:
Expo.Shared.PB1 %>% filter(Quail == 11)
# A tibble: 4 x 6
Expo Quail Segment Position Freq day
<fct> <int> <int> <int> <dbl> <int>
1 DC 11 2 1949 0.588 3
2 DC 11 2 1949 0.878 7
3 DC 11 2 1949 0.897 5
4 DC 11 2 1949 0.975 8
的确如此。所以解决方法很简单。在绘图之前将数据排序为您想要的顺序:
Expo.Shared.PB1 %>%
arrange(Quail, day) %>%
ggplot(aes(x=as.numeric(day), y=Freq, color = as.character(Quail))) +
geom_path()+
geom_point() +
facet_grid(Expo~.)
我认为这是你想要的,而不需要使用 stat="summary"
。
那么,为什么 stat="summary"
给了你想要的东西,尽管有警告?我在这里猜测,但这是我的理论。 stat="summary"
显示按 x-values 分组的 y-values 的任意摘要。为此,从逻辑上讲,它必须计算 y-values 子集的汇总统计数据。这样做的明显方法是使用 group_by
。现在,not at all obvious是否group_by
在分组时对数据进行排序。我的猜测是,在这种情况下,它确实排序了。所以你得到你想要的顺序作为对 stat="summary"
.
的意外调用 by-product
PS:要让 Quail
的值以数字顺序而不是字典顺序出现,请使用 color=as.factor(Quail)
(并使用 scale_color_discrete(name="Quail")
调整图例标题,如果必要的)。
我有以下数据:
structure(list(Expo = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L), .Label = c("DC", "DI"), class = "factor"), Quail = c(5L,
6L, 16L, 17L, 28L, 29L, 30L, 53L, 54L, 11L, 12L, 46L, 48L, 60L,
11L, 48L, 6L, 5L, 6L, 18L, 29L, 30L, 53L, 11L, 36L, 46L, 47L,
60L, 11L, 4L, 5L, 6L, 16L, 17L, 28L, 29L, 30L, 52L, 53L, 54L),
Segment = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Position = c(1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L, 1949L,
1949L, 1949L, 1949L), Freq = c(0.034496, 0.034845, 0.031079,
0.020761, 0.037311, 0.047204, 0.062257, 0.100617, 0.022637,
0.587758, 0.470607, 0.037855, 0.02897, 0.034457, 0.87815,
0.022788, 0.169897, 0.058831, 0.116039, 0.032077, 0.081132,
0.09126, 0.051852, 0.896703, 0.09873, 0.054908, 0.027505,
0.50293, 0.975181, 0.03713, 0.092243, 0.028103, 0.044125,
0.057707, 0.091152, 0.085498, 0.130286, 0.030099, 0.049717,
0.070069), day = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 7L, 7L, 7L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 1L, 1L, 8L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
)), row.names = c(NA, -40L), class = "data.frame")
当我运行
ggplot(Expo.Shared.PB1, aes(x=as.numeric(day), y=Freq, color = as.character(Quail))) +
geom_path()+
geom_point() +
facet_grid(Expo~.)
它给了我以下(不正确的)情节。
我解决了将 stat="summary" 添加到两个 geoms 的问题,但在这样做时它给了我以下消息: 未提供汇总函数,默认为 `mean_se()
ggplot(Expo.Shared.PB1, aes(x=as.numeric(day), y=Freq, color = as.character(Quail))) +
geom_path(stat = "summary")+
geom_point(stat = "summary") +
facet_grid(Expo~.)
输出:
剧情好像是我要找的,现在:
stat="summary" 到底在做什么?绘制的值是否根据原始值进行了修改?可以忽略该消息吗? (我确定不是)。
好的。我想我看到了这个问题。 [ 将“正确”的图表与“不正确”的图表进行比较很有帮助! :)]
geom_path
简单地“连接点”。它获取数据集中的点,并按照它们出现的顺序将它们连接起来。我的第一个想法是您的数据集没有按您预期的方式排序。所以,以Quail == 11
为例:
Expo.Shared.PB1 %>% filter(Quail == 11)
# A tibble: 4 x 6
Expo Quail Segment Position Freq day
<fct> <int> <int> <int> <dbl> <int>
1 DC 11 2 1949 0.588 3
2 DC 11 2 1949 0.878 7
3 DC 11 2 1949 0.897 5
4 DC 11 2 1949 0.975 8
的确如此。所以解决方法很简单。在绘图之前将数据排序为您想要的顺序:
Expo.Shared.PB1 %>%
arrange(Quail, day) %>%
ggplot(aes(x=as.numeric(day), y=Freq, color = as.character(Quail))) +
geom_path()+
geom_point() +
facet_grid(Expo~.)
我认为这是你想要的,而不需要使用 stat="summary"
。
那么,为什么 stat="summary"
给了你想要的东西,尽管有警告?我在这里猜测,但这是我的理论。 stat="summary"
显示按 x-values 分组的 y-values 的任意摘要。为此,从逻辑上讲,它必须计算 y-values 子集的汇总统计数据。这样做的明显方法是使用 group_by
。现在,not at all obvious是否group_by
在分组时对数据进行排序。我的猜测是,在这种情况下,它确实排序了。所以你得到你想要的顺序作为对 stat="summary"
.
PS:要让 Quail
的值以数字顺序而不是字典顺序出现,请使用 color=as.factor(Quail)
(并使用 scale_color_discrete(name="Quail")
调整图例标题,如果必要的)。