2014-11-19 2 views
-1

Я заинтересован в создании примера графика (в идеале с использованием ggplot), который отображает две нормальные кривые с различными средствами и различными стандартными отклонениями. Я обнаружил аргумент stat_function() ggplot, но не уверен, как получить вторую кривую на одном и том же участке.Участок множественных нормальных кривых в одном и том же участке

Этот код создает одну кривую:

ggplot(data.frame(x = c(-4, 4)), aes(x)) + stat_function(fun = dnorm) 

Любые консультации по пути, чтобы получить вторую кривую? Или, может быть, проще сделать в построении базового пакета?

+0

Возможно, эта ссылка поможет http://stackoverflow.com/questions/1376967/using-stat-function-and-facet-wrap-together-in-ggplot2-in-r – akrun

+1

Это 3 строки в базе R зарисовки. Я думаю, что это пример, где это просто проще: «plot (NA, xlim = c (-4,4), ylim = c (0,1)), кривая (dnorm (x, mean = 1, sd = 0.5) , col = "blue", add = TRUE), кривая (dnorm (x, mean = 0, sd = 1), col = "red", add = TRUE) ' – thelatemail

+0

Это сработало отлично - спасибо! – arrrrRgh

ответ

3

На всякий случай вы также захотите сделать это в ggplot (это также 3 линии ...).

ggplot(data.frame(x = c(-4, 4)), aes(x)) + 
    stat_function(fun = dnorm, args = list(mean = 0, sd = 1), col='red') + 
    stat_function(fun = dnorm, args = list(mean = 1, sd = .5), col='blue') 

В случае, если у вас есть более чем две кривые, это может быть лучше использовать mapply для этого. Это делает его несколько сложнее. Но для многих функций это, вероятно, стоит того.

ggplot(data.frame(x = c(-4, 4)), aes(x)) + 
    mapply(function(mean, sd, col) { 
    stat_function(fun = dnorm, args = list(mean = mean, sd = sd), col = col) 
    }, 
    # enter means, standard deviations and colors here 
    mean = c(0, 1, .5), 
    sd = c(1, .5, 2), 
    col = c('red', 'blue', 'green') 
) 
Смежные вопросы