Planuję zmienną kategorialną i zamiast pokazywać liczby dla każdej wartości kategorii.
Szukam sposobu, aby ggplot
wyświetlić procent wartości w tej kategorii. Oczywiście istnieje możliwość stworzenia innej zmiennej z wyliczonym procentem i wykreślenia tej jednej, ale muszę to robić kilkadziesiąt razy i mam nadzieję, że uda mi się to jednym poleceniem.
Eksperymentowałem z czymś takim
qplot(mydataf) +
stat_bin(aes(n = nrow(mydataf), y = ..count../n)) +
scale_y_continuous(formatter = "percent")
ale muszę go używać niepoprawnie, bo mam błędy.
Aby łatwo odtworzyć konfigurację, oto uproszczony przykład:
mydata <- c ("aa", "bb", NULL, "bb", "cc", "aa", "aa", "aa", "ee", NULL, "cc");
mydataf <- factor(mydata);
qplot (mydataf); #this shows the count, I'm looking to see % displayed.
W prawdziwym przypadku prawdopodobnie użyjęggplot
zamiast qplot
, ale właściwy sposób użycia stat_bin wciąż mi umyka .
Wypróbowałem również te cztery podejścia:
ggplot(mydataf, aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(formatter = 'percent');
ggplot(mydataf, aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(formatter = 'percent') + geom_bar();
ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) +
scale_y_continuous(formatter = 'percent');
ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) +
scale_y_continuous(formatter = 'percent') + geom_bar();
ale wszystkie 4 dają:
Error: ggplot2 doesn't know how to deal with data of class factor
Ten sam błąd pojawia się w prostym przypadku
ggplot (data=mydataf, aes(levels(mydataf))) +
geom_bar()
więc wyraźnie chodzi o to, jak ggplot
oddziałuje z pojedynczym wektorem. Drapię się w głowę, szukając w Google tego błędu, daje jeden wynik .