我目前正在尝试绘制使用ggplot创建的数据框中的2列
我正在绘制日期与数值的关系图。我使用dplyr库创建数据框:
is_china <- confirmed_cases_worldwide %>%
filter(country == "China", type=='confirmed') %>%
mutate(cumu_cases = cumsum(cases))
我相信原因是由于y值是cumsum函数的结果列,但不确定
该表如下所示,最后一列是目标y值:
2020-01-22 NA China 31.8257 117.2264 confirmed 1 1
2 2020-01-23 NA China 31.8257 117.2264 confirmed 8 9
3 2020-01-24 NA China 31.8257 117.2264 confirmed 6 15
4 2020-01-25 NA China 31.8257 117.2264 confirmed 24 39
5 2020-01-26 NA China 31.8257 117.2264 confirmed 21 60
6 2020-01-27 NA China 31.8257 117.2264 confirmed 10 70
7 2020-01-28 NA China 31.8257 117.2264 confirmed 36 106
8 2020-01-29 NA China 31.8257 117.2264 confirmed 46 152
当我使用列案例(在表上倒数第二)对此进行绘图时,很好,但是当我尝试使用累积案例进行图形化时,该图形非常混乱:
我不确定为什么。
答案 0 :(得分:0)
答案 1 :(得分:0)
您正在尝试按国家/地区分组,但是只有一个国家/地区。
library(dplyr)
is_china <- confirmed_cases_worldwide %>%
filter(country == "China", type=='confirmed') %>%
mutate(date = as.Date(date))
unique(is_china$country)
# [1] "China"
但是,lat
和long
变量具有33个区别,表示我们拥有面板数据。因此,如果不考虑面板结构,使用cumsum
会得到奇怪的值;此外,变量已经存在,我们不需要再次计算。总体而言,这解释了您所得到的奇怪之处。
由于province
变量为空,我们可以使用lat
和long
生成新的gps
变量进行分组。
unique(is_china$lat)
# [1] 31.8257 40.1824 30.0572 26.0789 ... [33] 29.1832
unique(is_china$long)
# [1] 117.2264 116.4142 107.8740 117.9874 ... [33] 120.0934
is_china$gps <- apply(is_china[4:5], 1, function(x) Reduce(paste, x))
现在我们可以使用gps
作为factor
来绘制数据。
library(ggplot2)
ggplot(is_china, aes(x=date, y=cumu_cases, color=factor(gps))) +
geom_line()
要仅选择特定的坐标,可以对数据进行子集化,例如:
ggplot(is_china[is_china$gps %in% c("30.9756 112.2707", "22.3 114.2"), ],
aes(x=date, y=cumu_cases, color=factor(gps))) +
geom_line()
数据:
confirmed_cases_worldwide <-
read.csv("https://raw.githubusercontent.com/king-sules/Covid/master/china_vs_world.csv")