文章目录

  • 面积图
    • 平平无奇面积图
    • 精致优雅面积图
    • 正负分开堆积图
  • 堆积图
    • 平平无奇堆积图
    • 顺序逆转堆积图
    • 去除竖线堆积图
    • 百分比比堆积图

面积图

面积图主要用来展示数量随时间变化的情况,单一变量的面积图在数字起伏较大时视觉效果较好。

平平无奇面积图

library(ggplot2)
library(gcookbook)
# 太阳黑子数据集
sunspots
A Time Series: 235 × 12
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1749 58.0 62.6 70.0 55.7 85.0 83.5 94.8 66.3 75.9 75.5 158.6 85.2
1750 73.3 75.9 89.2 88.3 90.0 100.0 85.4 103.0 91.2 65.7 63.3 75.4
1751 70.0 43.5 45.3 56.4 60.7 50.7 66.3 59.8 23.5 23.2 28.5 44.0
1752 35.0 50.0 71.0 59.3 59.7 39.6 78.4 29.3 27.1 46.6 37.6 40.0
# 将timeseries数据转换成dataframe数据
dss = data.frame(year = as.numeric(time(sunspot.year)), ss = as.numeric(sunspot.year))
head(dss)
A data.frame: 6 × 2
year ss
<dbl> <dbl>
1700 5
1701 11
1702 16
1703 23
1704 36
1705 58
ggplot(dss, aes(x = year, y = ss)) +
geom_area()

精致优雅面积图

# color指定边框颜色,fill指定填充颜色,alpha指定透明度
ggplot(dss, aes(x = year, y = ss)) +
geom_area(color = "green", fill = "green", alpha = 0.3)

正负分开堆积图

dss[100:200,]$ss = -dss[100:200,]$ss
dss$tag <- dss$ss >= 0
# rle用来捕获连续运行长度,比如
# dat <- c(1, 2, 2, 2, 3, 1, 4, 4, 1, 1)
# r <- rle(dat)
# r
#   lengths: int [1:6] 1 3 1 1 2 2
#   values : num [1:6] 1 2 3 1 4 1
cat.rle = rle(dss$tag)
# rep.int用来生成重复序列
# rep.int(1:5,2)
# 1 2 3 4 5 1 2 3 4 5
dss$group = rep.int(1:length(cat.rle$lengths), times=cat.rle$lengths)
# group的作用是把每一正负分段分为不同的组
ggplot(dss, aes(x = year, y = ss, fill = tag, group = group)) +
geom_area(alpha = 0.3) +
scale_fill_manual(values = c('green','red'), guide = FALSE)

# 如果仅使用fill自动分组会出现奇怪的图形,中间部分上方的红色是由于ggplot将tag中被FALSE分隔的两个TRUE看做同一group连接起来导致的
ggplot(dss, aes(x = year, y = ss, fill = tag)) +
geom_area(alpha = 0.3) +
scale_fill_manual(values = c('green','red'), guide = FALSE)

# 可以看到每一段连续的tag共享同一个group
dss[107:115,]
A data.frame: 9 × 4
year ss tag group
<dbl> <dbl> <lgl> <int>
107 1806 -28.1 FALSE 2
108 1807 -10.1 FALSE 2
109 1808 -8.1 FALSE 2
110 1809 -2.5 FALSE 2
111 1810 0.0 TRUE 3
112 1811 -1.4 FALSE 4
113 1812 -5.0 FALSE 4
114 1813 -12.2 FALSE 4
115 1814 -13.9 FALSE 4

堆积图

堆积图可以理解为操作对象扩展至多个变量的面积图。

平平无奇堆积图

head(uspopage)
A data.frame: 6 × 3
Year AgeGroup Thousands
<int> <fct> <int>
1900 <5 9181
1900 5-14 16966
1900 15-24 14951
1900 25-34 12161
1900 35-44 9273
1900 45-54 6437
ggplot(uspopage, aes(x = Year, y = Thousands, fill = AgeGroup)) +
geom_area(color = 'black', size = 0.2, alpha = 0.3) +
scale_fill_brewer(palette = "YlOrRd")

顺序逆转堆积图

library(plyr)
ggplot(uspopage, aes(x = Year, y = Thousands, fill = factor(uspopage$AgeGroup, levels = rev(levels(uspopage$AgeGroup))))) +
geom_area(color = 'black', size = 0.2, alpha = 0.3) +
scale_fill_brewer(palette = "YlOrRd", breaks = rev(levels(uspopage$AgeGroup))) +
labs(fill="AgeGroup")

去除竖线堆积图

ggplot(uspopage, aes(x = Year, y = Thousands, fill = AgeGroup)) +
geom_area(alpha = 0.3) +
scale_fill_brewer(palette = "YlOrRd") +
geom_line(position = 'stack', color = 'black', size = 0.2)

# 折腾半天我感觉还是没线的最好看
ggplot(uspopage, aes(x = Year, y = Thousands, fill = AgeGroup)) +
geom_area(alpha = 0.3) +
scale_fill_brewer(palette = "YlOrRd")

百分比比堆积图

# 计算百分比,首先按年份分成多个独立的dataframe,在每个frame内部计算present
uspopage_prop <- ddply(uspopage, "Year", transform, Persent = Thousands/sum(Thousands)*100)
ggplot(uspopage_prop, aes(x = Year, y = Persent, fill = AgeGroup)) +
geom_area(alpha = 0.3) +
scale_fill_brewer(palette = "YlOrRd")

拿R来画画(八):面积图与堆积图相关推荐

  1. 用echarts实现柱形图、折线图、堆积图的闪烁效果

    首先,echarts本身没有闪烁的功能供大家直接使用,下面我们将用最简单的方法去实现图表的闪烁! echarts图表的实现是通过对option进行设置,然后myChart.setOption(opti ...

  2. R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

  3. Tableau数据分析-Chapter01条形图、堆积图、直方图

    本专栏将使用tableau来进行数据分析,Chapter01使用Tableau-条形图.堆积图.直方图,记录所得所学,作者:北山啦 原文链接 来自百度 Tableau Software致力于帮助人们查 ...

  4. r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...

    点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...

  5. Python dataframe绘制饼图_【python可视化】:matplotlib:常见图表绘制——面积图、填图、饼图...

    •本文字数:约620字•阅读时长:约2分钟•难度:1颗星 斑点鱼将Matplotlib分为五部分: 图表窗口设置.图表基本元素及图表输出.图表样式参数.子图创建.常见图表绘制 本文讲第五部分:matp ...

  6. R绘图 vs Python绘图(散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图)

    写在前面:为啥不用excel绘制这些图,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用 ...

  7. python堆叠面积图_06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图...

    1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主 同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsi ...

  8. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图

    目录 Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图 1.基本图表绘制 plt.plot() ts.plot() 由Seri ...

  9. Matplotlib:面积图、填图、饼图

    本文主要介绍四个函数的用法: plt.plot.area() plt.fill(), plt.fill_between() plt.pie() 文章目录 1.面积图 2.填图 3.饼图 1.面积图 # ...

  10. Python数据可视化工具matplotlib(五)-- 面积图、填图、饼图

    面积图.填图.饼图 plt.plot.area() plt.fill(), plt.fill_between() plt.pie() import numpy as np import pandas ...

最新文章

  1. 安装网页图形界面管理Linux
  2. BCH进入广告行业,将会碰撞出什么样的火花
  3. 树莓派中找不到/dev/video0的解决方案及RaspberryCam的使用
  4. 指令重排序所带来的问题及使用volatile关键字解决问题
  5. access和mysql4注入小技巧
  6. Java 正则提取银行短信内容
  7. 判别性的低秩字典学习代码matlab,基于分类的判别性字典学习的稀疏编码算法研究...
  8. 客户端js服务端互相调用
  9. LINUX OpenGL简单测试代码
  10. RedHat Linux 5.2 网关及安全应用
  11. 启科量子国产量子编程软件项目或将启动开源计划
  12. CrossApp 0.3.8 发布,跨平台移动App开发引擎
  13. 台式机配置网站服务器,台式机搭建服务器的配置
  14. js中求2个数的最大值的几种方法
  15. 《乱世佳人》读书笔记及相关感悟3900字
  16. 交换游戏(状态压缩、记忆化搜索)
  17. 静态页面练习——京东商城登录页面
  18. Tomcat,Servlet,JSP之间是什么关系?
  19. vpu测试_联发科P30支持的VPU是什么?不知道就别说你懂科技了
  20. 各种艺术字、图片在线制作

热门文章

  1. 【Ydui.js】------ ydui.js 中的 util 中的方法讲解如何调用使用 例如:获取地址栏信息,js 倒计时,cookie, 获取图片地址等
  2. 深度学习入门资料整理
  3. python爬虫-破解验证码(封装超级鹰实现)
  4. 2021年3月CISSP考试顺利通过,超详细的经验介绍
  5. xcode打包IPA(完整详细图文)
  6. MATLAB 的串口连接
  7. Android 7.0以上版本 HTTPS 抓包解决方法
  8. 恶意代码分析——熊猫烧香
  9. idea安装插件gitee、插件商店里搜不到插件?
  10. 聚焦堆栈重建光场-SART实现(附代码)