Message-ID: <2779b4a7-bcdb-f578-9123-89c1a4d85c33@sapo.pt>
Date: 2020-08-17T05:49:23Z
From: Rui Barradas
Subject: Ggplot2 Line Problem
In-Reply-To: <5F39D6CA.7000602@sbcglobal.net>
Hello,
This type of problem is almost always a data reshaping problem.
ggplot graphics work better if the data is in the long format and you
have 3 columns for counts, one column for each category. If you reformat
from the current wide format to the long format you will have a date
vector, a categorical variable and a counts variable.
In the code below just change geom_point to geom_line and the problem is
solved.
library(tidyverse)
library(lubridate)
datO <- read.csv("https://api.covidtracking.com/v1/states/oh/daily.csv")
datO[ ,1] <- ymd(datO[ ,1])
dfO <- tibble::as_tibble(data.frame(date = datO[ ,"date"],
positive = datO[ ,"positive"],
negative = datO[ ,"negative"],
total = datO[ ,"total"]))
dfO %>%
pivot_longer(
cols = -date,
names_to = "cases",
values_to = "count"
) %>%
mutate(cases = factor(cases, levels = c("positive", "negative",
"total"))) %>%
ggplot(aes(date, count, color = cases)) +
geom_point() +
scale_color_manual(name = "Test",
labels = c("Positive", "Negative", "Total"),
values = c("red", "blue", "green")) +
ylim(0, 1750000) +
labs(x = "Date", y = "Number of Tests")+
ggtitle("COVID-19 Tests in Ohio \n (8/15/20)")+
theme_bw() +
theme(axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5))
Hope this helps,
Rui Barradas
?s 02:00 de 17/08/20, Stephen P. Molnar escreveu:
> I have cobbled together a short script to plot Covid-19 data.
>
> setwd("~/Apps/Models/1-CoronaVirus")
>
> library(tidyverse)
> library(lubridate)
>
> datO <- read.csv("https://api.covidtracking.com/v1/states/oh/daily.csv")
> datO[ ,1] <- ymd(datO[ ,1])
>
> dfO <- tibble::as_tibble(data.frame(datO[ ,"date"],datO[
> ,"positive"],datO[ ,"negative"],datO[ ,"total"]))
>
> dfO %>%
> ? ggplot(aes(x = datO[ ,"date"],y = datO[ ,"positive"]))+
> ? geom_point(color = 'red', size = 0.025)+
> ? geom_point(y = datO[ ,"negative"], color = 'blue', size = 0.025)+
> ? geom_point(y = datO[ ,"total"], color = "green", size = 0.025)+
> ? theme(axis.text.x = element_text(angle=30, hjust=1))+
> ? theme_bw()+
> ? scale_y_continuous(limits = c(0,1750000))+
> ? labs(x = "Date", y = "Number of Tests")+
> ? ggtitle("COVID-19 Tests in Ohio \n (8/15/20)")+
> ? theme(plot.title = element_text(hjust = 0.5))+
> ? scale_fill_discrete(name = "Test", labels = c("Positive", "Negative",
> "Total"))
>
> Here is the plot:
>
>
>
>
> but, if I want lines rather that the code (the aspplicable plines) uis:
>
> ggplot(aes(x = datO[ ,"date"],y = datO[ ,"positive"]))+
> ? geom_line(linetype = "solid",color = 'red')+
> ? geom_line(linetype = "dotdash",y = datO[ ,"negative"], color = 'blue')+
> ? geom_line(linetype = "twodash",y = datO[ ,"total"], color = "green")+
>
>
>
>
> Now two of the plots are reversed. Google has not been a friend in
> finding a solution.
>
> Help will be much appreciated.
>
> Thanks in advance
>