ggplot: gösteren % yerine kategorik değişkenlerin grafikleri sayar
Kategorik bir değişken komplo ve her kategori için sayıları göstermek yerine değer, ben Bir şekilde bu kategorideki değerler yüzdesini görüntülemek için ggplot almak için arıyorum. Tabii ki, hesaplanan yüzde ile başka bir değişken oluştur ve bu bir komplo mümkündür, ama bu kez birkaç düzine yapmak zorundayım ve bir komut elde etmek için umut.
Gibi bir şey deniyordum
qplot (mydataf) stat_bin(aes(n=nrow(mydataf), y=..count../n)) scale_y_continuous(formatter="percent")
ama hataları var gibi yanlış kullanılması, olmalıyım.
Kolay kurulumu yeniden oluşturmak için, burada basit bir örnek:
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.
Gerçek durumda muhtemelen qplot yerine ggplot kullanırım, ama stat_bin kullanmak için doğru yolu halen bulamıyorum.
Teşekkür ederim.
GÜNCELLEME:
Ayrıca bu dört yaklaşım denedim:
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();
ama 4 ver:
Error: ggplot2 doesn't know how to deal with data of class factor
Aynı hatayı basit bir durumda görünür
ggplot (data=mydataf, aes(levels(mydataf))) geom_bar()
açıkça ggplot tek bir vektör ile nasıl etkileşim kurduğu hakkında bir şey yani. Kafamı, o hata result bir tek verir için googling kaşıyorum.
CEVAP
Bu cevap oldu bu yana ggplot sözdizimi için bazı anlamlı değişiklikler olmuştur. Yorum yukarıdaki tartışmayı özetliyor:
require(ggplot2)
require(scales)
p <- ggplot(mydataf, aes(x = foo))
geom_bar(aes(y = (..count..)/sum(..count..)))
## version 3.0.9
# scale_y_continuous(labels = percent_format())
## version 3.1.0
scale_y_continuous(labels=percent)
İşte tekrarlanabilir bir örnek mtcars
kullanarak:
p <- ggplot(mtcars, aes(x = hp))
geom_bar(aes(y = (..count..)/sum(..count..)), binwidth = 25)
## scale_y_continuous(labels = percent_format()) #version 3.0.9
scale_y_continuous(labels = percent) #version 3.1.0
Bu soru şu anda 'ggplot sayısı vs yüzde histogram' umarım bu özü tüm bilgileri şu anda kabul edilmiş cevap üzerinde yorum yer yardımcı olur. Google'da #1 isabet
Windows 8.1 Aygıt Yöneticisi şimdi Goo...
Alanı %20 olarak gösteren bir html yer...
Nasıl bir İmageView ve bir TextView iç...
Değişkenlerin bildirimi pahalı?...
f() ilişkisiz yöntemi, ilk değişken ol...