美文网首页
【R画图学习14.1】面积图

【R画图学习14.1】面积图

作者: jjjscuedu | 来源:发表于2022-11-14 19:12 被阅读0次

今天,我们来学习另一种常见的图形,面积图。什么是面积图呢?面积图是一种源于折线图但是改变了其展现方式的图形。具体地,它通过一定的区域面积来表示数据大小,利用不同的颜色或者线条来区别不同组的数据。

我们还是用ggplot来画一个基本的面积图。使用的是一个US economic time series的名叫economics的数据。我们选择其中的两列数据:psavert和uempmed。

library(ggplot2)

library(lubridate)

library(tidyverse)

df <- economics[,c("date", "psavert", "uempmed")]

然后挑选了2000-2014年的数据。

df2 <- df %>%filter(year(df$date) %in% c(2000:2014))

我们先看一下这2个变量的分布。

ggplot(df2,aes(x=date))+

geom_line(aes(y=psavert),color="red")+

geom_line(aes(y=uempmed),color="blue")

从图中可以看出uempmed是要比psavert大的。所以如果我们要把2个面积分布放在一张图中就要注意顺序问题。

ggplot(df2,aes(x=date))+

geom_area(aes(y=uempmed,fill="uempmed"))+

geom_area(aes(y=psavert,fill="psavert"))

比如我们先画了uempmed,后画了psavert。没有遮挡问题。

但是,如果我们调一下顺序:

ggplot(df2,aes(x=date))+

geom_area(aes(y=psavert,fill="psavert"))+

geom_area(aes(y=uempmed,fill="uempmed"))

因为小的先画了,ggplot是一层层望上添加图层的,小的图层就遮挡了。

ggplot(df2,aes(x=date))+

geom_area(aes(y=uempmed,fill="uempmed"))+

geom_area(aes(y=psavert,fill="psavert"))+

  theme_bw()+

  theme(legend.title = element_blank())+

  scale_fill_brewer(palette = "Paired")+

  labs(title='Area Chart of Returns Percentage',subtitle='Source: FRED Economic Research')+

  ylab("Returns%")+

  xlab('Year')

如果想彼此互不遮挡,我们可以先画大的,然后第二层利用前面的加和,这样显示的就是完全第二个的大小了。有点类似堆积面积图。

ggplot(df2,aes(x=date))+

geom_area(aes(y=uempmed+psavert,fill="psavert"))+

geom_area(aes(y=uempmed,fill="uempmed"))+

  theme_bw()+

  theme(

    legend.title = element_blank()

  )+

  scale_fill_brewer(palette = "Paired")+

  labs(title='Area Chart of Returns Percentage',

      subtitle='Source: FRED Economic Research')+

  ylab("Returns%")+

  xlab('Year')

如果我们只想要画两条曲线中间的差值区域的话,通过geom_ribbon函数来实现。

ggplot(df2,aes(x=date))+

geom_ribbon(aes(ymin = if_else(uempmed > psavert, psavert, uempmed),

                ymax = if_else(uempmed > psavert, uempmed , psavert)),

            fill = "#decbe4", color = "black")

相关文章

网友评论

      本文标题:【R画图学习14.1】面积图

      本文链接:https://www.haomeiwen.com/subject/nyglxdtx.html