2009-10-02 14 views
8

folgendes ggplot2 Diagramm Gegeben:Zählung durch Faktor in ggplot2 Diagramm

ggplot(my_data, aes(colour=my_factor) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

Ich mag würde die Größe der Punkte machen, für diese frühere/Strom-Kombination zu der Zählung von my_factor proportional.

ggplot(my_data, aes(colour=my_factor, 
       size=<something-here>(my_factor)) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

Irgendwelche Ideen?

== == Bearbeiten

Hier ist ein sehr einfaches Beispiel basierend auf mpg-Datensatz. Lassen Sie uns definieren "great_hwy" als hwy> 35, und "great_cty" als cty> 25:

mpg$great_hwy[mpg$hwy > 35] <-1 
mpg$great_hwy[mpg$hwy <= 35] <-0 
mpg$great_hwy <- factor(mpg$great_hwy) 

mpg$great_cty[mpg$cty > 25] <- 1 
mpg$great_cty[mpg$cty <= 25] <- 0 
mpg$great_cty <- factor(mpg$great_cty) 

Wenn wir great_hwy gegen great_cty plotten, es uns nicht sagen viel:

ggplot(mpg) + geom_point(aes(x=great_cty, y=great_hwy)) 

Wie Könnte ich die Datenpunkte in Abhängigkeit von der Anzahl der x/y-Punkte größer machen? Hoffentlich klärt es auf, aber lass es mich anders wissen.

+1

Ein kleines Datensample wäre hier sehr hilfreich ... Sie können eines aus Datasets wählen, wenn Sie möchten. – Shane

+1

Ich verstehe nicht, was Sie mit "der Anzahl von meinem_Faktor für diese vorherige/aktuelle Kombination" meinen. Gibt es mehr als einen Datenpunkt für jedes x/y? Sie suchen nach einer Lösung für das übertriebene Problem? Oder meinst du etwas anderes? – Harlan

+0

@Shane, ich arbeite an einem besseren Beispiel nach Ihrem Vorschlag. @Harlan, es gibt viele Datenpunkte für jedes x/y. Ich möchte einen Datenpunkt für jedes x/y darstellen, und ich möchte, dass die Größe dieses Datenpunkts proportional zu der Anzahl x/y-Paare ist. – hgmnz

Antwort

20

Sie können dies natürlich tun, indem Sie extern zu ggplot zählen, aber eines der großen Vorteile von ggplot ist, dass Sie viele dieser Statistiken intern erledigen können!

Arbeiten mit dem mpg Beispiel oben:

ggplot(mpg) + 
    geom_point(aes(x=great_cty, y=great_hwy, 
       size=..count..), stat="bin") 

alt text

+0

Das ist eine großartige Lösung. Vielen Dank! – Shane

+0

Genau das, was ich gesucht habe. Sieht aus wie * die meisten * Autos sind nicht groß in Bezug auf Stadt und Autobahn Kilometer;) – hgmnz

+0

Sie können auch diese Seite überprüfen, nur um sicherzustellen, dass die Größe der Punkte ist, was Sie denken, es ist (Radius? Bereich?): http://had.co.nz/ggplot2/scale_size.html Ich denke, proportionale Bereiche werden traditionell proportionalen Radien vorgezogen. –