在 ggplot 中的每个时间点在 x 轴上绘制日期的问题 - 还有一些奇怪的日期转换事情(侧边栏)

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

我的主要问题是我希望显示该图中每个时间点的日期 enter image description here

不知道这是否是其中的一部分,但我很难将 csv 日期转换为 R 日期。正如您从下面的数据中看到的(请参阅链接 - 由于注释而删除,添加了 dput 数据),我的 .csv 文件中有 m/d/y,我必须告诉 R 它只是 %m/%d 按顺序为了将所有日期数据正确读取到 R 中。如果我执行了 %m/%d/%Y,我会得到一些日期,但它们的格式就像 0023/11/10 很奇怪,其余的都是 NA (大约 75%)。

这是我的代码:


library(tidyverse)
library(lubridate)

particle_data <- read.csv("C:/Users/.csv")

view(particle_data)

Dv50Data <- particle_data %>% 
  filter(Metric == "mean") 

Dv50Data$Dv50 <- as.numeric(as.character(Dv50Data$Dv50)) 

Dv50Data$Date <- as.Date(Dv50Data$Date, format = "%m/%d")
  
view(Dv50Data)

glimpse(Dv50Data)
  
  ggplot(Dv50Data, aes(x = Date,
                            y = Dv50,
                            group = Treatment,
                            color = Treatment)) + 
  geom_line()+
  geom_point() + 
    ylim (0,50) +
    labs(title = "Dose Response: Dv50 Particle Size Over Time",
         y = "Particle Size (microns)") + 
    scale_color_brewer(palette = "Dark2") +
    theme_minimal()

这是我的df

structure(list(Species = c("OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", 
"OFAV", "OFAV"), Treatment = c("10 NTU", "10 NTU", "10 NTU", 
"10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", 
"10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", 
"10 NTU", "10 NTU", "10 NTU", "10 NTU", "20 NTU", "20 NTU", "20 NTU", 
"20 NTU", "20 NTU", "20 NTU", "20 NTU", "20 NTU", "20 NTU", "20 NTU", 
"20 NTU", "20 NTU", "20 NTU", "20 NTU", "20 NTU", "20 NTU", "20 NTU", 
"20 NTU", "20 NTU", "20 NTU", "20 NTU", "29 NTU", "29 NTU", "29 NTU", 
"29 NTU", "29 NTU", "29 NTU", "29 NTU", "29 NTU", "29 NTU", "29 NTU", 
"29 NTU", "29 NTU", "29 NTU", "29 NTU", "29 NTU", "29 NTU", "29 NTU", 
"29 NTU", "29 NTU", "29 NTU", "29 NTU", "Stock", "Stock", "Stock", 
"Stock", "Stock", "Stock", "Stock", "Stock", "Stock", "Stock", 
"Stock", "Stock", "Stock", "Stock", "Stock", "Stock", "Stock", 
"Stock", "Stock", "Stock", "Stock", "Stock", "Stock", "Stock"
), Date = c("09/26/23", "09/26/23", "09/26/23", "10/13/23", "10/13/23", 
"10/13/23", "10/24/23", "10/24/23", "10/24/23", "11/10/23", "11/10/23", 
"11/10/23", "11/21/23", "11/21/23", "11/21/23", "12/08/23", "12/08/23", 
"12/08/23", "12/12/23", "12/12/23", "12/12/23", "09/26/23", "09/26/23", 
"09/26/23", "10/13/23", "10/13/23", "10/13/23", "10/24/23", "10/24/23", 
"10/24/23", "11/10/23", "11/10/23", "11/10/23", "11/21/23", "11/21/23", 
"11/21/23", "12/08/23", "12/08/23", "12/08/23", "12/12/23", "12/12/23", 
"12/12/23", "09/26/23", "09/26/23", "09/26/23", "10/13/23", "10/13/23", 
"10/13/23", "10/24/23", "10/24/23", "10/24/23", "11/10/23", "11/10/23", 
"11/10/23", "11/21/23", "11/21/23", "11/21/23", "12/08/23", "12/08/23", 
"12/08/23", "12/12/23", "12/12/23", "12/12/23", "09/26/23", "09/26/23", 
"09/26/23", "10/13/23", "10/13/23", "10/13/23", "10/24/23", "10/24/23", 
"10/24/23", "11/07/23", "11/07/23", "11/07/23", "11/10/23", "11/10/23", 
"11/10/23", "11/21/23", "11/21/23", "11/21/23", "12/08/23", "12/08/23", 
"12/08/23", "12/12/23", "12/12/23", "12/12/23"), Metric = c("mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", 
"SD", "%RSD", "mean", "SD", "%RSD"), Dv50 = c("37.5", "0.354", 
"0.946", "28.6", "0.53", "1.85", "32.2", "0.07", "0.22", "27.5", 
"0.234", "0.853", "31.1", "0.138", "0.444", "28.2", "0.567", 
"2.01", "29", "0.214", "0.737", "20.2", "0.0589", "0.292", "21.9", 
"0.099", "0.453", "21.7", "0.107", "0.494", "22.1", "0.167", 
"0.758", "22.6", "0.0816", "0.361", "21.6", "0.312", "1.44", 
"19.4", "0.056", "0.289", "30.4", "0.6.6", "1.99", "15.4", "0.044", 
"0.29", "20.2", "0.107", "0.531", "18.5", "0.116", "0.626", "20.1", 
"0.07", "0.349", "18.1", "0.091", "0.507", "19.9", "0.077", "0.387", 
"26.8", "0.16", "0.596", "14.3", "0.047", "0.332", "19.2", "0.07", 
"0.365", "20.5", "0.131", "0.638", "21.4", "0.177", "0.825", 
"18", "0.016", "0.09", "20.4", "0.062", "0.306", "19.3", "0.137", 
"0.707"), Quality.Check = c("Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", 
"Pass", "Pass")), class = "data.frame", row.names = c(NA, -87L
))
r
1个回答
0
投票

lubridate::mdy()
可以帮助解析
Date
变量。我在数据集中创建了一个日期列表,用于在 x 轴刻度上指定
breaks

library(tidyverse)

particle_data |> glimpse()
#> Rows: 87
#> Columns: 6
#> $ Species       <chr> "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", "OFAV", …
#> $ Treatment     <chr> "10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NTU", "10 NT…
#> $ Date          <chr> "09/26/23", "09/26/23", "09/26/23", "10/13/23", "10/13/2…
#> $ Metric        <chr> "mean", "SD", "%RSD", "mean", "SD", "%RSD", "mean", "SD"…
#> $ Dv50          <chr> "37.5", "0.354", "0.946", "28.6", "0.53", "1.85", "32.2"…
#> $ Quality.Check <chr> "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", …

Dv50Data <- particle_data |>
  filter(Metric == "mean") |>
  mutate(Date = mdy(Date),
         Dv50 = as.numeric(Dv50)) 

date_breaks <- Dv50Data |>
  distinct(Date) |>
  pull(Date)

Dv50Data |>
  ggplot(aes(x = Date, y = Dv50, color = Treatment)) +
  geom_line() +
  geom_point() +
  ylim(0,50) +
  labs(title = "Dose Response: Dv50 Particle Size Over Time",
       y = "Particle Size (microns)") + 
  scale_color_brewer(palette = "Dark2") +
  scale_x_date(breaks = date_breaks, date_labels = '%m/%d/%y') +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 30, hjust = 1),
        panel.grid.minor.x = element_blank())

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

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