2011-03-07 20 views
5
aşağıdaki veri seti için

, X-ekseni Genre ve y-ekseni olan bir ggplot2 çizgi grafiği, inşa etmek isteyençizme özet istatistikler

Genre Amount 
Comedy 10 
Drama 30 
Comedy 20 
Action 20 
Comedy 20 
Drama 20 

şartına tüm miktarlarının toplamı (olup Genre).

p = ggplot(test, aes(factor(Genre), Gross)) + geom_point() 
p = ggplot(test, aes(factor(Genre), Gross)) + geom_line() 
p = ggplot(test, aes(factor(Genre), sum(Gross))) + geom_line() 

ama boşuna:

Aşağıdaki çalıştılar. Böyle

cevap

8

Eğer komplo önce yeni bir veri çerçevesini hesaplamak istemiyorsanız, size cvan kullanım stat_summary. Örneğin, veri kümesi aşağıdaki gibiyse:

R> df <- data.frame(Genre=c("Comedy","Drama","Action","Comedy","Drama"), 
R+     Amount=c(10,30,40,10,20)) 
R> df 
    Genre Amount 
1 Comedy  10 
2 Drama  30 
3 Action  40 
4 Comedy  10 
5 Drama  20 

Bir stat="summary" argümanla ya qplot kullanabilirsiniz:

R> qplot(Genre, Amount, data=df, stat="summary", fun.y="sum") 

Veya bir tabana ggplot grafiği bir stat_summary ekleyin:

R> ggplot(df, aes(x=Genre, y=Amount)) + stat_summary(fun.y="sum", geom="point") 
+0

düzgün tek-liner ... kolayca 'factor' yumuşatmak olsa,' stringsAsFactors varsayılan davranıştır. – aL3xa

+0

Sanırım factor() komutunun soruda kullanılmasına izin vereceğim, fakat haklısınız, burada yararlı değil. İşaret ettiğin için teşekkürler. – juba

+0

Çok teşekkürler, faktörü kullanmamın sebebi, toplamı aşağıdan yukarıya doğru almayı deniyordu, ama bunu yapmıyor. –

1

deneyin şey: ggplot2 içinde

dtf <- structure(list(Genre = structure(c(2L, 3L, 2L, 1L, 2L, 3L), .Label = c("Action", 
"Comedy", "Drama"), class = "factor"), Amount = c(10, 30, 20, 
20, 20, 20)), .Names = c("Genre", "Amount"), row.names = c(NA, 
-6L), class = "data.frame") 

library(reshape) 
library(ggplot2) 
mdtf <- melt(dtf) 
cdtf <- cast(mdtf, Genre ~ . , sum) 
ggplot(cdtf, aes(Genre, `(all)`)) + geom_bar() 
+0

Yapıda() komutunu, soruda verilen örnekte otomatik olarak oluşturdunuz mu? Eğer evet ise, ben :-) – juba

+0

Hayır, ben elle girdiğim, böylece 'dput' üzerine uygulanmış olduğunu bilmek çok mutlu olurdum. – aL3xa

+0

Ancak 'psişch 'paketinden' read.clipboard' işlevini kullanabilirsiniz. Bir çekicilik gibi çalışır: 'dtf <- read.clipboard()'. Bana bunu hatırladığın için teşekkürler. – aL3xa