使用 ggplot2 对数据进行子集化并在折线图上绘制两个变量

Subsetting data and plotting two variables on a line chart with ggplot2

我想绘制一个 geom_line() 与 2 个国家/地区,这些国家/地区与日期和数据位于同一 .csv 中。

可以在此处找到 .csv:ourWorldinData csv testing positives

这是我的代码:

library(ggplot2)
library(tidyverse)
library(dplyr)

dfpositividad<- read.csv("C:/Users/BlackMamba/Desktop/R csv/test-positive.csv", encoding = "ASCII", header = TRUE, sep = ",")
colnames(dfpositividad) <- c("Pais","code", "fecha", "positividad")

#To read decimals
dfpositividad$positividad = as.numeric(gsub(",","\.",
                                  dfpositividad$positividad))

#To read the date
dfpositividad$fecha<-as.Date(dfpositividad$fecha)

ggplot(subset(dfpositividad, code == "ARG"), aes(y=positividad, x=fecha)) +   geom_line(stat="identity", size=1,color="blue")  
  

我想绘制两个或多个国家,例如西班牙、阿根廷和美国。 谁能帮帮我?

这是一个解决方案。我发现在绘制数据之前对数据进行子集化更容易。

dfpositividad_sub <- subset(dfpositividad, code == "ARG" | code == "USA")

positividad_plot <- ggplot(data = dfpositividad_sub, aes(x = fecha, y = positividad, colour = Pais, shape = Pais)) + 
  geom_point() + 
  geom_line(size = 1) + 
  scale_y_continuous(expand = c(0.01, 0)) + scale_x_date(labels = scales::date_format("%d %B"), date_breaks = "1 month", date_minor_breaks = "1 week") +
  xlab("Fecha") + 
  ylab("Positividad") + 
  labs(colour = "Pais", shape = "Pais") + 
  theme_bw(base_size = 14, base_family = "sans") + 
  theme(legend.position = "right")
print(positividad_plot)

剧情: