Przeglądałem przykłady podane na tej stronie, ale z jakiegoś powodu nie mogłem znaleźć właściwy sposób na zrobienie tego.
Mam takie dane:
Group Member Percentage
[1,] "1" "A" "60"
[2,] "1" "A" "20"
[3,] "1" "A" "20"
[4,] "1" "B" "80"
[5,] "1" "B" "5"
[6,] "1" "B" "5"
[7,] "1" "B" "5"
[8,] "2" "C" "50"
[9,] "2" "C" "50"
[10,] "2" "D" "25"
[11,] "2" "D" "25"
[12,] "2" "D" "25"
[13,] "2" "D" "20"
[14,] "2" "D" "5"
I można je utworzyć za pomocą następujących poleceń:
a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D")
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5)
dat = data.frame(Group=a, Member=b, Percentage=c)
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", position="dodge", fill="white", colour="black")
Ostatni wiersz daje mi następującą fabułę:
To, czego naprawdę szukam, to połączyć każdy słupek w jednej grupie z jednym słupkiem i przedstawić wartości procentowe jako ułamek tego samego słupka (gdzie każdy członek z każdej grupy jest wykreślany za pomocą jednego słupka, przy czym każdy słupek ma wartości procentowe jako ich zabarwienie). Więc użyłem następujących:
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", colour="white")
I uzyskałem to:
Ale teraz nie mogę poprawnie uzyskać kolorów. Chcę czegoś dokładnie takiego jak podane poniżej, ale nie jestem w stanie zrozumieć, jak to zrobić. Jakieś sugestie, jak to zrobić?
2 odpowiedzi
Ok w końcu to dostałem! Hurra! Oto pełny kod, jeśli ktoś inny jest zainteresowany:
a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D")
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5)
dat = data.frame(Group=a, Member=b, Percentage=c)
ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")
I z tym, co zasugerował @joran (bardzo dziękuję!) w komentarzach:
ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")
fill = factor(Percentage)
.
factor(Percentage)
tekst w legendzie na prawo na coś innego?
+ labs(fill = "Fill label")
Jesteś blisko. Próbować
ggplot(dat, aes(x=Member, y=Percentage, fill = factor(Percentage))) + geom_bar(stat = "identity")
Który produkuje
Podobne pytania
Powiązane pytania
Nowe pytania
r
R to darmowy język programowania typu open source i środowisko oprogramowania do obliczeń statystycznych, bioinformatyki, wizualizacji i obliczeń ogólnych. Proszę podać minimalne i powtarzalne przykłady wraz z pożądanymi wynikami. Użyj dput () dla danych i określ wszystkie pakiety inne niż podstawowe za pomocą wywołań biblioteki (). Nie osadzaj obrazów dla danych lub kodu, zamiast tego użyj wciętych bloków kodu. W przypadku pytań związanych ze statystykami należy skorzystać z https://stats.stackexchange.com.
position="stack"
. Zastanawiam się, jaka jest różnica. Byłoby dobrze, gdyby ggplot nie używał ograniczonych kolorów, zamiast używać jednego dla każdego nowego znalezionego procentu.