Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Creating a line graph with ggplot2 to show count change over time

I have a dataset that includes two columns: CaptureTime and Count. The CaptureTime column includes timestamps of when the count was recorded, and the Count column includes the actual count at that time.

CaptureTime Count
2023/01/21 03:40:33 257692746
2023/01/21 03:41:03 258058244
2023/01/21 03:41:33 258410404
2023/01/21 03:42:03 258737938
2023/01/21 03:42:33 259092123
2023/01/21 03:43:03 259465642
2023/01/21 03:43:33 259832477
2023/01/21 03:44:03 260196953
2023/01/21 03:44:33 260570014
2023/01/21 03:45:03 260942799
2023/01/21 03:45:33 261301729
2023/01/21 03:46:03 261662278
2023/01/21 03:46:33 262018775
2023/01/21 03:47:03 262382558
2023/01/21 03:47:33 262736133
2023/01/21 03:48:03 263088786
2023/01/21 03:48:33 263437736

I am trying to use ggplot2 to draw a line graph that shows how the count changes over time. I want the x-axis to represent the CaptureTime and the y-axis to represent the Count. However, since there are so many values on the x-axis, I don’t want any text to be displayed on it.

I have been trying to use ggplot2 to create this graph, but I am having trouble getting the graph to look the way I want it to. Can anyone help me with this?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Update

This is what I have now. It doesn’t work as expected though.


d <- read.table(file = 'D:\\data.txt', sep = '\t', header = TRUE)
d
View(d)
head(d, 3)

d$CaptureTime <- as.Date(d$CaptureTime)

# d$CaptureTime <- ymd(d$CaptureTime, format = "%Y/%m/%d %H:%M:%S")
# d$CaptureTime <- as.POSIXct(d$CaptureTime, format = "%Y-%m-%d %H:%M:%S")


library(scales)
library(lubridate)

d %>%
    ggplot(aes(CaptureTime, Count)) +
    geom_point() +
    geom_line() +
    scale_x_date(date_labels = "%H:%M") +
    theme_bw() +
    labs(
        title = "Count",
        x = "CaptureTime",
        y = "Count"
    )

>Solution :

I think you need to convert CaptureDate from a character vector to date-time format:

library(ggplot2)

ggplot(df, aes(lubridate::ymd_hms(CaptureTime), Count)) +
  geom_line() +
  geom_point() +
  scale_x_datetime("Capture Time") +
  scale_y_continuous("Count", labels = scales::comma)+
  theme_minimal(base_size = 16)

Created on 2023-01-26 with reprex v2.0.2


Question data in reproducible format

df <- structure(list(CaptureTime = c("2023/01/21 03:40:33", 
                                     "2023/01/21 03:41:03", 
"2023/01/21 03:41:33", "2023/01/21 03:42:03", "2023/01/21 03:42:33", 
"2023/01/21 03:43:03", "2023/01/21 03:43:33", "2023/01/21 03:44:03", 
"2023/01/21 03:44:33", "2023/01/21 03:45:03", "2023/01/21 03:45:33", 
"2023/01/21 03:46:03", "2023/01/21 03:46:33", "2023/01/21 03:47:03", 
"2023/01/21 03:47:33", "2023/01/21 03:48:03", "2023/01/21 03:48:33"
), Count = c(257692746L, 258058244L, 258410404L, 258737938L, 
259092123L, 259465642L, 259832477L, 260196953L, 260570014L, 260942799L, 
261301729L, 261662278L, 262018775L, 262382558L, 262736133L, 263088786L, 
263437736L)), class = "data.frame", row.names = c(NA, -17L))


Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading