2016-02-15 3 views
2

Я пытаюсь создать график с гистограммой и диаграммой рассеяния только на одном графике с использованием вторичной оси. Более подробно, вот пример данных:объединить гистограмму с диаграммой рассеяния в R

#generate example data 

set.seed(1) 
a <- rnorm(200,mean=500,sd=35) 
data <- data.frame(a = a, 
        b = rnorm(200, mean=10, sd=2), 
        c = c(rep(1,100), rep(0,100))) 

# produce a histogram of data$a 
hist(a, prob=TRUE, col="grey") 

#add a density line 
lines(density(a), col="blue", lwd=2) 

#scatter plot 
plot(data$a,data$b,col=ifelse(data$c==1,"red","black")) 

enter image description here enter image description here

То, что я хочу сделать, это объединить гистограмму и график рассеяния вместе. Это означает, что моя ось x будет data$a, моя основная ось y равна frequency/density для гистограммы, а моя вторичная ось y равна data$b.

+0

Будут ли они тот же масштаб и/или преобразование первичной по оси у? Если нет, вы можете прочитать объяснение Хэдли Уикхемса, почему это не очень хорошая идея. [Хорошее сообщение о том, почему вы не должны] (http://stackoverflow.com/questions/3099219/plot-with-2-y-axes-one-y-axis-on-the-left-and-another-y -axis-on-the-right) –

ответ

0

Может быть что-то вроде этого ...

# produce a histogram of data$a 
hist(a, prob=TRUE, col="grey") 

#add a density line 
lines(density(a), col="blue", lwd=2) 

par(new = TRUE) 

#scatter plot 
plot(data$a,data$b,col=ifelse(data$c==1,"red","black"), 
    axes = FALSE, ylab = "", xlab = "") 
axis(side = 4, at = seq(4, 14, by = 2)) 
+0

Делает это. благодаря – KS89

Смежные вопросы