今天我们来重复一下这张图,首先用我们的nCov2019包,我们可以容易地访问到历史记录,nCov2019包中的全球历史数据, 然后稍微操作一下,就可以拿到所有确诊数超过100的国家,把这个时间当做0点,然后我们就可以对比一下发展趋势了。

require(nCov2019)
require(dplyr)

d <- load_nCov2019()
dd <- d['global'] %>% 
  as_tibble %>%
  rename(confirm=cum_confirm) %>%
  filter(confirm > 100) %>%
  group_by(country) %>%
  mutate(days_since_100 = as.numeric(time - min(time))) %>%
  ungroup 

Continue reading

最近人民日报新媒体发布的「新冠肺炎全球疫情形势」图,很多人想重复,但画不出来。这其实是几行代码的事情而已。

这个图,大名叫风玫瑰图,用R画起来分分钟的事情。但你画出来的,可能很丑,要画出爆款,还是有点门槛的。

这个图确诊数是取过对数,这一点容易,而颜色的映射,也是取对数的,不然的话,前三是红的,其它全绿了。然后标国家和确诊数目,字体还要旋转相应的角度,这一点可能是最难的。当然细节上还有一点,就是中间还要空一个白洞​。​如果你知道怎么加白洞,那么加两圈淡淡的圈也容易了。​

首先我们用nCov2019包中的全球历史数据,两三行代码就能拿到。

Continue reading

新冠全球历史数据

我们的nCov2019包,悄咪咪地加入了全球的历史数据。

历史数据,一如既往地用load_nCov2019()函数获得。然后历史数据嘛,也是一样使用x['global']获得。

> require(nCov2019)
Loading required package: nCov2019
> x = load_nCov2019()
> d = x['global']
> head(d)
        time country cum_confirm cum_heal cum_dead
1 2019-12-01   China           1        0        0
2 2019-12-02   China           1        0        0
3 2019-12-03   China           1        0        0
4 2019-12-04   China           1        0        0
5 2019-12-05   China           1        0        0
6 2019-12-06   China           1        0        0
> tail(d)
           time                        country cum_confirm cum_heal cum_dead
1606 2020-03-08                        Tunisia           1        0        0
1607 2020-03-08                        Ukraine           1        0        0
1608 2020-03-08                  United States         445       10       19
1609 2020-03-08 Holy See  [Vatican City State]           1        0        0
1610 2020-03-08                        Vietnam          30       16        0
1611 2020-03-08                   South Africa           2        0        0

之前的lang参数照常使用,用于指定语言。如果不指定,则会通过R的语言设定来自动设置语言,简单点讲就是你的R是中文的,自动使用中文,其它情况则使用英文。

Continue reading

正如图中所展示的,你在公众号的后台,发送期刊的全称或简称,它就会返回来这个期刊的信息,当然包括我们最想要知道的影响因子和分区信息。

这里的简称是官方简称,像图中Methods Ecol Evol,就是Methods in Ecology and Evolution的简称,这是官方的简称,非官方的,比如我们可以说这个杂志是MEE,这种基本上是不被支持的,因为期刊太多,容易撞名。

所以用起来很简单,全称或简称,输进去,立马出来相关的信息,比如

Continue reading

安装新方式

在《检索疫情数据的R包来了》一文写的安装方式,依然是可行的。但鉴于许多国内的用户,可能在访问github上存在一些问题,我把nCov2019在国内的码云上做了个同步的镜像,所以呢,你也可以通过码云去安装了,安装代码如下:

## 方法一,使用github
remotes::install_github("GuangchuangYu/nCov2019")

## 方法二,使用gitee
remotes::install_git('https://gitee.com/GuangchuangYu/nCov2019')

Continue reading

答案嘛,就是自己画legend啊,你看看legend函数,还不是些简单的代码在画,自己画即可。不要被这些条条框框给套住。 从ggplot2拿legend 为了突破你的想像力,在此处甚至于我要给你个例子,用ggplot2来生成个legend,放在base plot上去。 自己画legend,有何不可?!如果base有现成的函数画图,而你只熟悉ggplot2,你甚至于可以互搞。而互搞,当然要借助于ggplotify包:《ggplotify简史》。 col = colorspace::rainbow_hcl(3) names(col) = unique(iris$Species) library(ggplotify) color = col[iris$Species] p = as.ggplot(~plot(iris$Sepal.Length, iris$Sepal.Width, col=color, pch=15)) library(ggplot2) p2 = ggplot(iris, aes(Sepal.Length, Sepal.Width, color=Species)) + geom_point() + scale_color_manual(values=col, name="") legend = cowplot::get_legend(p2) p + ggimage::geom_subview(x=.7, y=.6, subview=legend) 这里用base plot画了一个图,又用ggplot2画了一个,用cowplot把legend抽出来,然后再用我的另一个包ggimage进行图上嵌图,完事。ggimage实例可以参考这篇《shit,拟合的残差这么大!》。 用ggplot2画legend 上面这例子是不是还不过瘾,因为啊我还是用ggplot2给重新画了一遍,如果你这么看,那么你的脑洞不够大,画是画了,但不一定要画一样的图,比如说有现成的base函数画复杂的图,而你不会用ggplot2画,但不妨碍你画个简单的图,但这简单的图中的图例可以切出来使用啊。 呼应我上面讲到的,图例自己徒手画,我们用ggplot2来来徒手一下。画出下面这个图例: p2 <- ggplot() + annotate("point", x=1,y=1:3,shape=15, color=col) + annotate("text", x=1.01, y=1:3, label=names(col), hjust=0) + xlim(0.99, 1.2) + ylim(0, 4) + theme_void() 对着代码看,不应该有什么问题,打了三个点,再打了三个相应的文本。然后再让我们把这图当做图例,嵌套到base plot上去。 p + ggimage::geom_subview(x=.

Continue reading

Author's picture

Guangchuang Yu

Bioinformatics Professor @ SMU

Bioinformatics Professor

Guangzhou