错误:无效输入:time_trans 仅适用于 POSIXct 类的对象>

问题描述 投票:0回答:1

今天我一直试图找出这个错误一段时间。我已经阅读了其他几个线程,但似乎无法找到解决方案。我已经检查了数据帧的结构并且矢量(日期)的格式正确,但我仍然收到错误。知道问题是什么吗?代码如下。

    > str(df)
    'data.frame':   29 obs. of  4 variables:
     $ date: POSIXct, format: "2022-11-22" "2023-05-18" ...
     $ dist: Factor w/ 8 levels "0.5","2","6",..: 1 1 1 2 2 2 2 3 3 3 ...
     $ mean: num  5 2.33 7.83 2.89 3 ...
     $ se  : num  NA NA 4.833 0.909 NA ...
    > limits<-aes(xmax = mean + se, xmin = mean - se)
    > pal=viridisLite::viridis(9) 
    > ggplot(df, aes(x=date, y=mean, xmin=mean-se, xmax=mean+se,
    +                     group=dist, color=dist)) +
    +   geom_point(size=2, alpha=0.7) +
    +   geom_path(linewidth=1.5, alpha=0.7) +
    +   geom_errorbar(limits,width=.1,linewidth=.75) +
    +   theme_bw(base_size = 17) +
    +   scale_color_manual(values=pal) +
    +   labs(x="Date", y="Cummulative Accretion (mm)")
    Error: Invalid input: time_trans works with objects of class POSIXct only
    > 

数据看起来像这样:

    View(df)
    > df
             date dist      mean        se
    1  2022-11-22  0.5  5.000000        NA
    2  2023-05-18  0.5  2.333333        NA
    3  2023-08-15  0.5  7.833333 4.8333333
    4  2022-11-22    2  2.888889 0.9094836
    5  2023-03-23    2  3.000000        NA
    6  2023-05-18    2  1.000000 0.0000000
    7  2023-08-15    2  6.000000 2.6943013
    8  2022-11-22    6  2.500000 0.2886751
    9  2023-03-23    6  3.222222 1.7462482
    10 2023-05-18    6  4.333333 1.5030833
    11 2023-08-15    6  9.416667 3.1983068
    12 2022-11-22   12  4.750000 0.9464847
    13 2023-03-23   12  6.250000 0.1595712
    14 2023-05-18   12  4.833333 1.3977495
    15 2023-08-15   12 10.666667 1.3608276
    16 2023-03-23   18  4.333333        NA
    17 2023-05-18   18  4.666667 1.0000000
    18 2023-08-15   18  6.833333 3.1666667
    19 2022-11-22   24  4.458333 0.8535736
    20 2023-03-23   24  5.833333 0.3967460
    21 2023-05-18   24  4.250000 0.8207382
    22 2023-08-15   24 11.250000 2.8427132
    23 2023-03-23   30  1.166667 0.1666667
    24 2023-05-18   30  2.833333 1.5000000
    25 2023-08-15   30  7.500000 2.5000000
    26 2022-11-22   48  3.888889 0.4843221
    27 2023-03-23   48  3.777778 1.2813958
    28 2023-05-18   48  2.250000 1.0307764
    29 2023-08-15   48  5.416667 2.0109653

我尝试将向量重新格式化为日期、POSIXct.Date,尝试重新导入数据、重新启动 R,并向 R 诸神献祭。

ggplot2 posixct as.date
1个回答
0
投票

我无法让你的

limits
映射工作,但我认为这可以完成工作:

suppressPackageStartupMessages(library(tidyverse))

df <- read.table(header=TRUE, sep="", text=c("
date dist      mean        se
2022-11-22  0.5  5.000000        NA
2023-05-18  0.5  2.333333        NA
2023-08-15  0.5  7.833333 4.8333333
2022-11-22    2  2.888889 0.9094836
2023-03-23    2  3.000000        NA
2023-05-18    2  1.000000 0.0000000
2023-08-15    2  6.000000 2.6943013
2022-11-22    6  2.500000 0.2886751
2023-03-23    6  3.222222 1.7462482
2023-05-18    6  4.333333 1.5030833
2023-08-15    6  9.416667 3.1983068
2022-11-22   12  4.750000 0.9464847
2023-03-23   12  6.250000 0.1595712
2023-05-18   12  4.833333 1.3977495
2023-08-15   12 10.666667 1.3608276
2023-03-23   18  4.333333        NA
2023-05-18   18  4.666667 1.0000000
2023-08-15   18  6.833333 3.1666667
2022-11-22   24  4.458333 0.8535736
2023-03-23   24  5.833333 0.3967460
2023-05-18   24  4.250000 0.8207382
2023-08-15   24 11.250000 2.8427132
2023-03-23   30  1.166667 0.1666667
2023-05-18   30  2.833333 1.5000000
2023-08-15   30  7.500000 2.5000000
2022-11-22   48  3.888889 0.4843221
2023-03-23   48  3.777778 1.2813958
2023-05-18   48  2.250000 1.0307764
2023-08-15   48  5.416667 2.0109653
"))

df$date <- as.POSIXct(df$date)
df$dist <- as.factor(df$dist)

df$upper <- df$mean+df$se
df$lower <- df$mean-df$se

head(df)
#>         date dist     mean        se     upper    lower
#> 1 2022-11-22  0.5 5.000000        NA        NA       NA
#> 2 2023-05-18  0.5 2.333333        NA        NA       NA
#> 3 2023-08-15  0.5 7.833333 4.8333333 12.666666 3.000000
#> 4 2022-11-22    2 2.888889 0.9094836  3.798373 1.979405
#> 5 2023-03-23    2 3.000000        NA        NA       NA
#> 6 2023-05-18    2 1.000000 0.0000000  1.000000 1.000000
str(df)
#> 'data.frame':    29 obs. of  6 variables:
#>  $ date : POSIXct, format: "2022-11-22" "2023-05-18" ...
#>  $ dist : Factor w/ 8 levels "0.5","2","6",..: 1 1 1 2 2 2 2 3 3 3 ...
#>  $ mean : num  5 2.33 7.83 2.89 3 ...
#>  $ se   : num  NA NA 4.833 0.909 NA ...
#>  $ upper: num  NA NA 12.7 3.8 NA ...
#>  $ lower: num  NA NA 3 1.98 NA ...

pal <- viridisLite::viridis(8)

ggplot(df, aes(x=date, y=mean, group=dist, color=dist)) +
  geom_point(size=2, alpha=0.7) +
  geom_line(linewidth=1.5, alpha=0.7) +
  geom_errorbar(aes(y=mean, ymin=lower, ymax=upper), width=0.1, linewidth=0.75) +
  theme_bw(base_size = 17) +
  scale_color_manual(values=pal) +
  labs(x="Date", y="Cummulative Accretion (mm)")

创建于 2024-05-10,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.