Dodanie trzeciego wymiaru z kolorami

“Wspomóż rozwój naszego Bloga. Kliknij w Reklamę. Nic nie tracisz a zyskujesz  naszą ogromną wdzięczność … oraz lepsze i ciekawsze TEKSTY. Dziękujemy”

Jak to często bywa, chcemy popracować nad utworzonym wcześniej kodem, aby dodać więcej funkcji. W tym przypadku chcemy dodać trzeci wymiar do wykresów za pomocą kolorów. Chcemy móc określić zmienną color, która będzie używana do dalszego dzielenia danych wykresu. Aby to osiągnąć, dodajemy parametr color do sygnatury funkcji za pomocą wzorca „NULL check” i w każdym przypadku dodajemy odpowiedni parametr. Dodanie parametru bezpośrednio w funkcji aes_string() nie jest problematyczne w przypadku NULL, ponieważ wartości NULL wskazują na ggplot(), nie chcemy aby użyć koloru do wypełnienia wykresu. Pamiętaj jednak, że nie jesteśmy w stanie użyć tej samej techniki z y. Zamiast tego sprawdzamy czy powinniśmy wysłać y, czy nie, i wysyłać to do funkcji ggplot() tylko wtedy, gdy mamy wartość inną niż NULL. Dodajemy również parametr position= „dodge” do funkcji geom_bar() tak, że otrzymujemy niezakumulowane wykresy słupkowe. Jeśli nie wyślemy tego parametru otrzymalibyśmy skumulowane wykresy słupkowe i dla tych konkretnych wykresów pomyśleliśmy, że wersja unstacked wyglądała lepiej. Możesz samemu wypróbować wersję skumulowaną. Spójrzmy na następujący kod:

graph)bars <- funtio(data, x,y =  NULL, color = NULL) {

if (is.null(y)) {

graph <- ggplot(datat, aes_string(,fill = color)) + geom_bar(position = „dodge”) + ggtitle(paste(x, „Frequency”)) + ylab(„Frequency”)

} else {

aggregation <- get_aggregation(y)

graph <- ggplot(data, aes_string(x,y, fill = color)) +  geom_bar(

fu.y = aggregation,

stat = „summary”, postion = „dodge”) +

ggtitle(paste(y, „by” , x)

)

}

if (class(data[, x] ) == „numeric”) {

graph <- graph + scale_x_continous (

breaks = seq(min(data[, x]),

max(data[, x]))

)

}

return(graph)

}

Zauważ, że mamy teraz cztery różne przypadki, które możemy chcieć przedstawić na wykresie, po pierwsze, gdy określimy tylko wartość x, po drugie, gdy określimy wartości x i y, po trzecie, gdy określimy wartości x i color, po czwarte , kiedy określimy wszystkie trzy z nich. Ponieważ specyfikacja ggplot() dla każdego z tych przypadków jest niepowtarzalna, nie możemy ich zwinąć do mniejszej liczby przypadków. Należy również pamiętać, że wewnątrz bloków warunkowych przechowujemy tylko kod, który jest specyficzny dla konkretnego sprawdzenia, a z bloku warunkowego wyciągamy kod, który nie jest specyficzny dla sprawdzenia i powinien być stosowany za każdym razem w dwóch przypadkach. To właśnie robimy z funkcjami ylab() i geom_bar() w zewnętrznym bloku if i z funcjami get_aggregation() i geom_bar() w zewnętrznym bloku else. W przeciwnym razie niepotrzebnie powtarzalibyśmy kod, co jest bardzo złą praktyką.

Teraz możemy stworzyć wykresy słupkowe, które opcjonalnie otrzymają trzeci parametr color (pokazany powyżej), a jeśli zostanie wysłany, zostanie użyty do podzielenia danych za pomocą kolorów. Zauważ, że w pierwszym wierszu poniższego kodu musimy jawnie wysłać parametr color.  Dzieje się tak, ponieważ pomijamy parametr y w wywołaniu funkcji, a jeśli nie podamy jednoznacznie parametru color, zostanie on zinterpretowany jako parametr x.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *