2012-10-17 17 views
6

Mam zestaw danych z 224900 obserwacjami i 10 zmiennymi, które są wynikiem różnych przekształceń wstecznych serii Taylor na oryginalne wartości danych. Chciałbym pokryć wykresy gęstości każdej z tych 10 zmiennych, aby pokazać poziom odporności transformacji wstecznej serii Taylora na dane szacunkowe. Zamiast mieć tylko 10 linii, pomyślałem, że dobrze byłoby zastosować kolor, aby każdy wykres gęstości miał 10% skali szarości. Jeśli istnieją dane, które odnoszą się tylko do jednego z wykresów, byłoby 10% szarości, dwa wykresy byłyby dwa razy ciemniejsze w 20%, do miejsca, w którym wszystkie wykresy gęstości pokrywają się, co wynosi 100%.Nakładka 10 wykresów gęstości w R z kolorem proporcjonalnym do liczby nachodzących na siebie działek

Użyłem melt, aby uzyskać ramkę danych, która ma 2249000 wierszy. Są trzy kolumny, pierwsza to identyfikator osoby, druga to zmienna grupująca (variable), a trzecia to wartość dziennego spożycia kJ (value).

Użyłem następującego kodu do nałożenia wykresów gęstości w ggplot2, ale dla grup używa on różnych kolorów. Jak mogę zmienić ten kod, aby uzyskać moją szarej skali? Chcę, aby wszystkie 10 grup miało ten sam kolor i gęstość kolorów; celem wykresu jest po prostu wizualne pokazanie ilości nakładania się na wykres gęstości za pomocą skali szarości.

ggplot(Energy, aes(x=value, fill=variable)) + geom_density(alpha = 0.5) 

Niektóre dane testowe do zabawy dla tych, którzy chcą pomóc, stosując 5 grup, a nie 10:

variable <- c(rep("A",100), rep("B",100), rep("C",100), rep("D",100), rep("E",100)) 
value <- c(rnorm(100,5000,200), rnorm(100,5050,210), rnorm(100,5100,215), 
      rnorm(100,5150,220), rnorm(100,5200,225)) 
MyData <- cbind.data.frame(value, variable) 
ggplot(MyData, aes(x=value, fill=variable)) + geom_density(alpha = 0.5) 

Myślę, że odpowiedź może być związane z modyfikacji scale_colour_grey i/lub scale_manual ale don nie rozumiem wystarczająco dużo, aby samemu to rozwiązać.

Odpowiedz

8

Można to zrobić za pomocą group estetyczne i dokonywania fill dla gęstości lekki odcień szarości jak gray10 lub gray20:

ggplot(MyData, aes(x=value, group=variable)) + geom_density(alpha = 0.5, fill="gray20") 

które dadzą Ci:

Density plot

W twoim przypadku prawdopodobnie chcesz gray10, ponieważ masz 10 grup, a nie 5, które są tu przedstawione.

+0

Dziękuję, dokładnie tego chciałem. Zmieniłem 'fill =" gray20 "' to "fill =" gray10 "' dla mojego 10-grupowego "właściwego" zestawu danych i działa idealnie! – Michelle