ggplot无法正常显示

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

我目前正在尝试在一个数据框中用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

当我用列的情况(表上第二列到最后一列)做图时,它很好,但当我尝试用累积的情况做图时,图形非常不稳定。

enter image description here

我不知道为什么

r ggplot2 dplyr cumsum
1个回答
0
投票

这是一种方法。

library(ggplot2)
ggplot(is_china,aes(x = as.Date(date),y = cumu_cases)) +
   geom_line()

enter image description here


0
投票

你想按国家分组,但只有一个国家。

library(dplyr)
is_china <- confirmed_cases_worldwide %>%
  filter(country == "China", type=='confirmed') %>%
  mutate(date = as.Date(date))

unique(is_china$country)
# [1] "China"

然而, latlong 变量有33个区分,说明我们有面板数据。所以,如果不考虑面板结构,你会得到奇怪的值与 cumsum此外,变量已经存在,我们不需要再次计算它。总的来说,这就解释了你得到的那些奇怪的线条。

由于 province 变量为空,我们可以使用 latlong 以产生新的 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()

enter image description here

要只选择特定的坐标,您可以对数据进行子集,例如。

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()

enter image description here


数据:

confirmed_cases_worldwide <- 
  read.csv("https://raw.githubusercontent.com/king-sules/Covid/master/china_vs_world.csv")
© www.soinside.com 2019 - 2024. All rights reserved.