R:在2x2窗口中并排放置四个格子条形图?(R: Four Lattice barcharts side

编程入门 行业动态 更新时间:2024-10-28 14:26:17
R:在2x2窗口中并排放置四个格子条形图?(R: Four Lattice barcharts side-by-side in 2x2 Window?)

代码,我想并排做2x2条形图,使y轴最大值在所有和

常见的ylabel 常见的xlabel 常见的传说 共同头衔 每个条形图都有自己的副标题 每个条形图之间的分隔线如图2所示

# Wanted output 2x2 barchart where top column Ite. 1 and Ite. 2 and row-names female and male # http://www.magesblog.com/2012/12/changing-colours-and-legends-in-lattice.html require("lattice") f<-function(x) as.double(as.character(x)) #factors converted to vectors http://stackoverflow.com/a/40680020/54964 data.female <- structure(list(N11.1 = structure(c(3L, 3L), .Label = c("", "0.0", "1.0", "N11"), class = "factor"), N22.1 = structure(c(2L, 2L), .Label = c("", "0.0", "2.0", "N22"), class = "factor"), N33.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N33"), class = "factor"), N44.1 = structure(2:3, .Label = c("", "0.0", "0.1", "0.2", "N44"), class = "factor"), N21.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N21"), class = "factor"), N31.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N31"), class = "factor"), N32.1 = structure(c(5L, 7L), .Label = c("", "0.0", "10.8", "11.0", "12.0", "17.0", "20.9", "22.8", "24.0", "3.0", "4.0", "44.0", "N32"), class = "factor")), .Names = c("N11.1", "N22.1", "N33.1", "N44.1", "N21.1", "N31.1", "N32.1"), row.names = c("Sinus", "Arr/AHB"), class = "data.frame") data.male <- structure(list(N11.1 = structure(c(3L, 3L), .Label = c("", "0.0", "1.0", "N11"), class = "factor"), N22.1 = structure(c(2L, 2L), .Label = c("", "0.0", "2.0", "N22"), class = "factor"), N33.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N33"), class = "factor"), N44.1 = structure(c(2L, 2L), .Label = c("", "0.0", "0.1", "0.2", "N44"), class = "factor"), N21.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N21"), class = "factor"), N31.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N31"), class = "factor"), N32.1 = structure(c(11L, 9L), .Label = c("", "0.0", "10.8", "11.0", "12.0", "17.0", "20.9", "22.8", "24.0", "3.0", "4.0", "44.0", "N32"), class = "factor")), .Names = c("N11.1", "N22.1", "N33.1", "N44.1", "N21.1", "N31.1", "N32.1"), row.names = c("Sinus", "Arr/AHB"), class = "data.frame") ID<-c("Sinus","Arr/AHB") tl <- "female" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.female, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl ) tl <- "male" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.male, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl ) # Just repeat two barcharts more to get 2x2 example tl <- "female" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.female, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl ) tl <- "male" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.male, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl )

图1电流输出分离,图2通缉输出结构,图3用户20650条形图代码输出

R:3.3.1 操作系统:Debian 8.5

Code where I would like to do 2x2 barcharts side-by-side such that the y-axis max value would be the same in all and

common ylabel common xlabel common legends common title each barchart with their own subtitle separator line between each barchart like in Fig. 2

Code

# Wanted output 2x2 barchart where top column Ite. 1 and Ite. 2 and row-names female and male # http://www.magesblog.com/2012/12/changing-colours-and-legends-in-lattice.html require("lattice") f<-function(x) as.double(as.character(x)) #factors converted to vectors http://stackoverflow.com/a/40680020/54964 data.female <- structure(list(N11.1 = structure(c(3L, 3L), .Label = c("", "0.0", "1.0", "N11"), class = "factor"), N22.1 = structure(c(2L, 2L), .Label = c("", "0.0", "2.0", "N22"), class = "factor"), N33.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N33"), class = "factor"), N44.1 = structure(2:3, .Label = c("", "0.0", "0.1", "0.2", "N44"), class = "factor"), N21.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N21"), class = "factor"), N31.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N31"), class = "factor"), N32.1 = structure(c(5L, 7L), .Label = c("", "0.0", "10.8", "11.0", "12.0", "17.0", "20.9", "22.8", "24.0", "3.0", "4.0", "44.0", "N32"), class = "factor")), .Names = c("N11.1", "N22.1", "N33.1", "N44.1", "N21.1", "N31.1", "N32.1"), row.names = c("Sinus", "Arr/AHB"), class = "data.frame") data.male <- structure(list(N11.1 = structure(c(3L, 3L), .Label = c("", "0.0", "1.0", "N11"), class = "factor"), N22.1 = structure(c(2L, 2L), .Label = c("", "0.0", "2.0", "N22"), class = "factor"), N33.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N33"), class = "factor"), N44.1 = structure(c(2L, 2L), .Label = c("", "0.0", "0.1", "0.2", "N44"), class = "factor"), N21.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N21"), class = "factor"), N31.1 = structure(c(2L, 2L), .Label = c("", "0.0", "N31"), class = "factor"), N32.1 = structure(c(11L, 9L), .Label = c("", "0.0", "10.8", "11.0", "12.0", "17.0", "20.9", "22.8", "24.0", "3.0", "4.0", "44.0", "N32"), class = "factor")), .Names = c("N11.1", "N22.1", "N33.1", "N44.1", "N21.1", "N31.1", "N32.1"), row.names = c("Sinus", "Arr/AHB"), class = "data.frame") ID<-c("Sinus","Arr/AHB") tl <- "female" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.female, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl ) tl <- "male" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.male, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl ) # Just repeat two barcharts more to get 2x2 example tl <- "female" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.female, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl ) tl <- "male" barchart(f(N11.1)+f(N22.1)+f(N33.1)+f(N44.1)+f(N21.1)+f(N31.1)+f(N32.1) ~ ID, data=data.male, auto.key=list(space='right'), ylim=c(0,50), beside=TRUE, ylab = "Number of cases", xlab = "Population/Sample", main = tl )

Fig. 1 Current output separate, Fig. 2 Wanted output structure, Fig. 3 User 20650 barchart code output

R: 3.3.1 OS: Debian 8.5

最满意答案

我会通过重塑您的数据来做到这一点

首先整理变量类并添加分组变量

# convert type and add gender label # I would have a look at why your numerics have been stored as factors data.female[] <- lapply(data.female, function(x) as.numeric(as.character(x))) data.female$gender <- "female" data.female$ID <- rownames(data.female) data.male[] <- lapply(data.male, function(x) as.numeric(as.character(x))) data.male$gender <- "male" data.male$ID <- rownames(data.male)

将两个数据帧绑定在一起

dat <- rbind(data.female[names(data.male)], data.male)

安排绘图数据

library(reshape2) datm <- melt(dat)

情节

# Lattice library(lattice) barchart(variable ~ value|ID, groups=gender, data=datm, auto.key=list(space='right')) # ggplot2 ggplot(datm, aes(variable, value, fill=gender)) + geom_bar(stat="identity", position = position_dodge()) + facet_grid(ID ~ .)

I would do this by reshaping your data

First sort out the class of the variables and add grouping variables

# convert type and add gender label # I would have a look at why your numerics have been stored as factors data.female[] <- lapply(data.female, function(x) as.numeric(as.character(x))) data.female$gender <- "female" data.female$ID <- rownames(data.female) data.male[] <- lapply(data.male, function(x) as.numeric(as.character(x))) data.male$gender <- "male" data.male$ID <- rownames(data.male)

bind the two data frames together

dat <- rbind(data.female[names(data.male)], data.male)

Arrange data for plotting

library(reshape2) datm <- melt(dat)

Plot

# Lattice library(lattice) barchart(variable ~ value|ID, groups=gender, data=datm, auto.key=list(space='right')) # ggplot2 ggplot(datm, aes(variable, value, fill=gender)) + geom_bar(stat="identity", position = position_dodge()) + facet_grid(ID ~ .)

更多推荐

本文发布于:2023-08-04 10:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1414918.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:格子   窗口中   条形图   barcharts   Lattice

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!