2014-04-06 4 views
2

'산산이 음모'와 오른쪽에 히스토그램을 사용하여 시계열 데이터를 시각화하고 싶지만 상단의 히스토그램을 끄는 방법을 알아 내지 못했습니다. 측면.ScatterPlot과 함께 하나의 히스토그램 음모 함께

코드 예 :

install.packages("psych") 
library(psych) 
data = matrix(rnorm(n=100000,mean=2,sd=1.5), nrow = 100, ncol=1000) 
fs = list() 
fs$p_Z = 1*(data>2) 
n_p = 1; 
    for(i in floor(seq(1,dim(data)[2],length.out=n_p))) 
{ 
    scatter.hist(x = rep(1:length(data[,i])), y = data[,i], 
       xlab = 'observations', 
       ylab = 'log(TPM)', 
       title = 'Mixture Plot', 
       col = c("red","blue")[fs$p_Z[,i]+1], 
       correl = FALSE, ellipse = FALSE, smooth = FALSE) 
} 

결과 :

scatter plot with two histograms, one upper side and one on right side

예상 결과 : 내가 가지고있는 하나지만 위쪽에 아무런 히스토그램 동일합니다. 즉, log (TPM)에 대한 오른쪽의 막대 그래프 만입니다.

참고 : 사용하기가 쉽지만 좋지만 한 가지 히스토그램을 끄는 방법을 찾을 수없는 psych package, scatter.hist function을 사용하고 있습니다.

답변

3

유연성이 끝나면 해킹이 시작됩니다. scatter.hist 기능을 보면 R 기본 그래픽의 기본적인 사용법을 알 수 있습니다. 수정 된 코드를 따르는 것은 당신이 원하는 플롯을 만들 것입니다 :

scat.hist <- function(x, y, xlab = NULL, ylab = NULL, title = "", ...) { 

## Create layout 
layout(matrix(c(1,2),1,2,byrow=TRUE), c(3,1), c(1,3)) 

## Plot scatter 
par(mar=c(5,5,3,1)) 
plot(x= x, y = y, xlab = xlab, ylab = ylab, main = title, ...) 

## Right histogram 
yhist <- hist(y, plot = FALSE, breaks = 11) 
par(mar=c(5,2,3,1)) 
mp <- barplot(yhist$density, space=0, horiz=TRUE, axes = FALSE) 
## Density 
d <- density(y, na.rm = TRUE, bw = "nrd", adjust = 1.2) 
temp <- d$y 
     d$y <- (mp[length(mp)] - mp[1] + 1) * (d$x - min(yhist$breaks))/(max(yhist$breaks) - min(yhist$breaks)) 
     d$x <- temp 
lines(d) 
} 

이의 첫 번째 행을 해보자 :

i = 1 
scat.hist(x = seq_along(data[,i]), y = data[,i], col = c("red", "blue")[fs$p_Z[,i]+1], xlab = 'observations', ylab = 'log(TPM)', title = 'Mixture Plot') 

enter image description here

+0

좋은 대답과 좋은 해킹! – Dnaiel