拿R来画画(八):面积图与堆积图
文章目录
- 面积图
- 平平无奇面积图
- 精致优雅面积图
- 正负分开堆积图
- 堆积图
- 平平无奇堆积图
- 顺序逆转堆积图
- 去除竖线堆积图
- 百分比比堆积图
面积图
面积图主要用来展示数量随时间变化的情况,单一变量的面积图在数字起伏较大时视觉效果较好。
平平无奇面积图
library(ggplot2)
library(gcookbook)
# 太阳黑子数据集
sunspots
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)
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,]
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)
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来画画(八):面积图与堆积图相关推荐
- 用echarts实现柱形图、折线图、堆积图的闪烁效果
首先,echarts本身没有闪烁的功能供大家直接使用,下面我们将用最简单的方法去实现图表的闪烁! echarts图表的实现是通过对option进行设置,然后myChart.setOption(opti ...
- R语言数据可视化之折线图、堆积图、堆积面积图
折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...
- Tableau数据分析-Chapter01条形图、堆积图、直方图
本专栏将使用tableau来进行数据分析,Chapter01使用Tableau-条形图.堆积图.直方图,记录所得所学,作者:北山啦 原文链接 来自百度 Tableau Software致力于帮助人们查 ...
- r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...
点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...
- Python dataframe绘制饼图_【python可视化】:matplotlib:常见图表绘制——面积图、填图、饼图...
•本文字数:约620字•阅读时长:约2分钟•难度:1颗星 斑点鱼将Matplotlib分为五部分: 图表窗口设置.图表基本元素及图表输出.图表样式参数.子图创建.常见图表绘制 本文讲第五部分:matp ...
- R绘图 vs Python绘图(散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图)
写在前面:为啥不用excel绘制这些图,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用 ...
- python堆叠面积图_06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图...
1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主 同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsi ...
- Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
目录 Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图 1.基本图表绘制 plt.plot() ts.plot() 由Seri ...
- Matplotlib:面积图、填图、饼图
本文主要介绍四个函数的用法: plt.plot.area() plt.fill(), plt.fill_between() plt.pie() 文章目录 1.面积图 2.填图 3.饼图 1.面积图 # ...
- Python数据可视化工具matplotlib(五)-- 面积图、填图、饼图
面积图.填图.饼图 plt.plot.area() plt.fill(), plt.fill_between() plt.pie() import numpy as np import pandas ...
最新文章
- 安装网页图形界面管理Linux
- BCH进入广告行业,将会碰撞出什么样的火花
- 树莓派中找不到/dev/video0的解决方案及RaspberryCam的使用
- 指令重排序所带来的问题及使用volatile关键字解决问题
- access和mysql4注入小技巧
- Java 正则提取银行短信内容
- 判别性的低秩字典学习代码matlab,基于分类的判别性字典学习的稀疏编码算法研究...
- 客户端js服务端互相调用
- LINUX OpenGL简单测试代码
- RedHat Linux 5.2 网关及安全应用
- 启科量子国产量子编程软件项目或将启动开源计划
- CrossApp 0.3.8 发布,跨平台移动App开发引擎
- 台式机配置网站服务器,台式机搭建服务器的配置
- js中求2个数的最大值的几种方法
- 《乱世佳人》读书笔记及相关感悟3900字
- 交换游戏(状态压缩、记忆化搜索)
- 静态页面练习——京东商城登录页面
- Tomcat,Servlet,JSP之间是什么关系?
- vpu测试_联发科P30支持的VPU是什么?不知道就别说你懂科技了
- 各种艺术字、图片在线制作