ggplot2-一页多图(不同来源, 灵活绘制)(转载)
来源:互联网 发布:现在做淘宝很难 编辑:程序博客网 时间:2024/05/28 18:44
转自:http://blog.csdn.net/tanzuozhev/article/details/51112223
ggplot2 的分面(facet)可以绘制一页多图, 但是必须是来自同一个数据集的图形,局限性很大. 如果我们有多个不同来源的图形,想绘制到一张图上又该如何处理呢? multiplot
提供了极为强大的函数功能.
multiplot
可以设置行列, 也可以设置一个矩阵进行布局.
# Multiple plot function## ggplot objects can be passed in ..., or to plotlist (as a list of ggplot objects)# - cols: Number of columns in layout# - layout: A matrix specifying the layout. If present, 'cols' is ignored.## If the layout is something like matrix(c(1,2,3,3), nrow=2, byrow=TRUE),# then plot 1 will go in the upper left, 2 will go in the upper right, and# 3 will go all the way across the bottom.#multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) { library(grid) # Make a list from the ... arguments and plotlist plots <- c(list(...), plotlist) numPlots = length(plots) # If layout is NULL, then use 'cols' to determine layout if (is.null(layout)) { # Make the panel # ncol: Number of columns of plots # nrow: Number of rows needed, calculated from # of cols layout <- matrix(seq(1, cols * ceiling(numPlots/cols)), ncol = cols, nrow = ceiling(numPlots/cols)) } if (numPlots==1) { print(plots[[1]]) } else { # Set up the page grid.newpage() pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout)))) # Make each plot, in the correct location for (i in 1:numPlots) { # Get the i,j matrix positions of the regions that contain this subplot matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE)) print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row, layout.pos.col = matchidx$col)) } }}
范例
library(ggplot2)# This example uses the ChickWeight dataset, which comes with ggplot2# 图1p1 <- ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet, group=Chick)) + geom_line() + ggtitle("Growth curve for individual chicks")p1
# 图2p2 <- ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet)) + geom_point(alpha=.3) + geom_smooth(alpha=.2, size=1) + ggtitle("Fitted growth curve per diet")p2
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.
# 图3p3 <- ggplot(subset(ChickWeight, Time==21), aes(x=weight, colour=Diet)) + geom_density() + ggtitle("Final weight, by diet")p3
# 图4p4 <- ggplot(subset(ChickWeight, Time==21), aes(x=weight, fill=Diet)) + geom_histogram(colour="black", binwidth=50) + facet_grid(Diet ~ .) + ggtitle("Final weight, by diet") + theme(legend.position="none") # No legend (redundant in this graph) p4
合并为一张图
multiplot(p1, p2, p3, p4, cols=2)
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.
阅读全文
0 0
- ggplot2-一页多图(不同来源, 灵活绘制)(转载)
- ggplot2-一页多图(不同来源, 灵活绘制)
- ggplot2-分面(facet) 一页多图(转载)
- ggplot2 一页多图
- ggplot2 一页多图
- ggplot2-绘制分布图(转载)
- ggplot2 3.0 分面、一页多图
- ggplot2-分面(facet) 一页多图
- ggplot2绘制条形图
- ggplot2绘制Excel所有图
- ggplot2绘制Excel所有图
- ggplot2-条形图和折线图(转载)
- 使用R,ggplot2绘制NMDS图
- ggplot2绘制分面图
- ggplot2–绘制分布图
- ggplot2-绘制散点图
- ggplot2实现多图合并
- qplot\ggplot2 绘制箱型图、散点图
- 正则表达式
- ABAP计算间隔月份
- win7(iis7)无法加载运行CSS和图片的解决方法
- 第十八讲 二叉树、JDK8函数式接口、File类、输入流与输出流、字节流与字符流、文件复制的实现
- jq与js中的事件机制与阻止
- ggplot2-一页多图(不同来源, 灵活绘制)(转载)
- 第一次机房收费系统——报表
- 安卓热修复
- linux mysql 5.7的安装配置
- Laravel 出现 No application encryption key has been specified.
- pdf 提取图片
- Spark算子[04]:map,flatMap,mapToPair,flatMapToPair
- Mapped Statements collection does not contain value for
- 【Scikit-Learn 中文文档】模型选择:选择估计量及其参数