Próbuję uzyskać kilka działek na wykresie udostępniającym wspólną legendę za pomocą metody facet_wrap(). Wykresy zawierają 4 oszacowania gęstości, każdy skonstruowany przy użyciu funkcji geom_density(). Jest to minimalny przykład tego, jak dane wyglądają. Jedna gęstość jest szacowana dla każdego poziomu estymatora, a dla każdej wartości xp rysowany jest inny wykres.Wiele działek o wielu gęstościach w ggplot2
> esti
estimator value xp
1 OLS Oracle 0.35757317 N= 10 T= 100
2 OLS Oracle 0.50540655 N= 10 T= 100
3 OLS Full 0.02276872 N= 10 T= 100
4 OLS Full 0.53616020 N= 10 T= 100
5 Lasso 0.00000000 N= 10 T= 100
6 Lasso 0.30448578 N= 10 T= 100
7 Adaptive Lasso 0.00000000 N= 10 T= 100
8 Adaptive Lasso 0.49949267 N= 10 T= 100
9 OLS Oracle 0.48392914 N= 10 T= 500
10 OLS Oracle 0.53685915 N= 10 T= 500
11 OLS Full 0.50565482 N= 10 T= 500
12 OLS Full 0.61407003 N= 10 T= 500
13 Lasso 0.38342782 N= 10 T= 500
14 Lasso 0.52012928 N= 10 T= 500
15 Adaptive Lasso 0.47951875 N= 10 T= 500
16 Adaptive Lasso 0.53222172 N= 10 T= 500
można zbudować jedną działkę z czterech gęstości:
library('ggplot2')
ggplot(data=esti,aes(x=value,colour=estimator)) + geom_density()
lub dwa panele z jednej gęstości w każdym:
ggplot(data=esti,aes(x=value)) + geom_density() +facet_wrap(~xp,scales='free_y')
Jednak oba razem nie działa i wynik w błędzie:
> ggplot(data=esti,aes(x=value,colour=estimator)) + geom_density() +facet_wrap(~xp,scales='free_y')
Error in UseMethod("scale_dimension") :
no applicable method for 'scale_dimension' applied to an object of class "NULL"
Próbowałem różnych wartości dla łuski lub pomijałem ją zupełnie, bez powodzenia. Próbowałem śledzić, który obiekt był stosowany do "scale_dimension", bez powodzenia. Czy ktoś może mnie oświecić?
tylko domyślać, ale to może mieć coś wspólnego z fakt, że obliczasz gęstość tylko na dwie wartości na grupę? Kiedy utworzę podobny wykres za pomocą większego zestawu danych, nie otrzymam tego błędu. – joran
Dziękuję za odpowiedź, która była problemem podczas używania 'geom_density()'. Problem pozostaje ten sam, gdy próbuję użyć 'geom_line (stat = 'density')' chociaż ... –
Ale ... problem jest taki sam, nie? Nadal obliczasz gęstość tylko na dwóch wartościach. – joran