0

我有以下数据:

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" 到底在做什么?绘制的值是否从原始值修改?可以忽略消息吗?(我确定不是)。

4

1 回答 1

1

好的。我想我看到了这个问题。[ 将“正确”图表与“不正确”图表进行比较很有帮助!:)]

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 值分组的 y 值的任意摘要。为此,它必须从逻辑上计算 y 值子集的汇总统计量。这样做的明显方法是使用group_by. 现在,在分组时是否对数据进行排序并不明显。group_by我的猜测是,在这种情况下,它确实排序。所以你得到了你想要的排序作为调用的意外副产品stat="summary"

PS:要使 的值Quail以数字而不是字典顺序出现,请使用color=as.factor(Quail)(并scale_color_discrete(name="Quail")在必要时用于调整图例标题)。

于 2020-07-22T12:46:40.317 回答