2014-11-05 2 views
2

У меня есть график z-кривой, и мы использовали geom_segment для цветных областей под кривой.окраска сегментов кривой при использовании stat_function в ggplot

я график распределения г с использованием

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

enter image description here

Я хотел бы, чтобы цвет сегменты кривой так, что цвет кривой совпадает с цветом на оси х под ним ,

Поскольку я использую stat_function, я чувствую, что есть возможность изменить его характеристики.

Неужели кто-то пытался подобный подвиг и нашел способ сделать это?

ответ

2
dnorm_segment <- function(x, min = 0, max = 1) dnorm(x)*ifelse(x>=min & x<=max, 1, NA) 
zero_segment <- function(x, min = 0, max = 1) ifelse(x>=min & x<=max, 0, NA) 
plot_both <- function(min, max, colour) 
{ 
    args <- list(min = min, max = max) 
    list(
    stat_function(fun = dnorm_segment, col = colour, size = 3, args = args, n = 1001), 
    stat_function(fun = zero_segment, col = colour, size = 3, args = args, n = 1001) 
) 
} 

ggplot(data.frame(x = c(-3, 3)), aes(x)) + 
    stat_function(fun = dnorm) + 
    plot_both(-3, -2, "purple") + 
    plot_both(-2, -1, "yellow") 
# + etc 

enter image description here

+0

прекрасный ответ, я действительно впечатлен. Спасибо! –

+0

Добро пожаловать! – tonytonov

+0

К сожалению, с ggplot2 вам нужно подмножество (разделить его на сегменты вручную) данные перед его использованием. Мы хотели бы, чтобы этот параметр был интегрирован непосредственно на ggplot2 – skan

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