2013-04-18 11 views
5

ヒストグラムのX軸とマージナルボックスプロットを一致させるにはどうすればよいですか?マージンボックスプロットを含むヒストグラムR

data <- rnorm(1000) 
nf <- layout(mat = matrix(c(1,2),2,1, byrow=TRUE), height = c(1,3)) 
layout.show(nf) 
par(mar=c(5.1, 4.1, 1.1, 2.1)) 
boxplot(data, horizontal=TRUE, outline=FALSE) 
hist(data) 

答えて

10

一つの解決策は、hist()xlim=と同じ範囲にboxplot()ylim=を設定することであろう。 ggplotグリッドパッケージを使用

set.seed(123) 
data <- rnorm(1000) 
nf <- layout(mat = matrix(c(1,2),2,1, byrow=TRUE), height = c(1,3)) 
par(mar=c(5.1, 4.1, 1.1, 2.1)) 
boxplot(data, horizontal=TRUE, outline=FALSE,ylim=c(-4,4)) 
hist(data,xlim=c(-4,4)) 

enter image description here

0

library(gridExtra) 
library(ggplot2) 
library(grid) 

p1 = ggplot(aes(x = mpg), data = mtcars) + 
    geom_histogram(fill = "lightblue", color = "black",binwidth = 1) + 
    scale_x_continuous(limits = c((min(mtcars$mpg)),(max(mtcars$mpg))), 
        breaks = pretty(mtcars$mpg, n = 10)) + 
    labs(x = "", y = "Count", title = ("Histogram & Boxplot of mpg")) 

p2 = ggplot(aes(x = "", y = mpg), data = mtcars) + 
    stat_boxplot(geom ='errorbar', width = 0.4) + 
    geom_boxplot(outlier.colour = "red") + 
    coord_flip() + 
    scale_y_continuous(limits = c((min(mtcars$mpg)),(max(mtcars$mpg))), 
        breaks = pretty(mtcars$mpg, n = 10)) + 
    stat_summary(fun.y = mean, colour = "purple", geom = "point", 
       shape = 18, size = 3) + 
    labs(x = "", y = "mpg") 


grid.draw(rbind(ggplotGrob(p1), ggplotGrob(p2), size = "first"))