ggplot
簡単に(長い形式のデータが必要です)。
library(tidyr); library(dplyr); library(ggplot2)
df <- dat %>% t() %>% as.data.frame() %>% gather(row) # chage data into a long format
Breaks <- hist(dat, plot=F)$breaks # get (or decide) breaks
ggplot(df, aes(x = value, fill = row)) + geom_histogram(position = "stack", breaks = Breaks)
[EDITED]
はこれが何をしたいですか?
## original
ggplot(df, aes(x = value)) +
geom_histogram(breaks = Breaks) +
facet_wrap(~ row) # make histogram par group.
## modified
ggplot(df, aes(x = value, fill = row)) + # change fill colour
geom_histogram(breaks = Breaks) +
facet_wrap(~ row, ncol = 1) + # bring graphs into line
# facet_wrap(~ row, ncol = 1, scales = "free_y") # if you don't want fixed scale
theme(strip.background = element_blank(), strip.text.x = element_blank()) # delete labels
[EDITED2:base_plotアプローチ]
基本プロット時間を節約できます。
## example data
x <- 1500; y <- 1500; g <- 30
set.seed(1); dat <- matrix(rnorm((x + y) * g), ncol = x + y)
## decide breaks
Breaks <- seq(-4.5, 4.5, 0.5)
## change par() to draw multiple graphs
par.old <- par(mar = c(0.1, 4.0, 0.1, 0.5), oma = c(4, 0, 0, 0), mfrow = c(nrow(dat), 1))
for(i in 1:nrow(dat)) {
hist(dat[,i], breaks = Breaks, xaxt = "n", xlab = "", main = "")
# grid(NULL)
}
par(new=T)
hist(dat[,nrow(dat)], breaks = Breaks, main = "", yaxt = "n",
xlab = "x", ylab = "", border = NA) # add x-axis
par(par.old)
このように、各行に個別の棒グラフを表示し、比較のために縦に積み重ねる必要がありますか? – shayaa
それは正しいです。各行にはそれぞれ独自のy軸と共有x軸があります。 – Arturo