2012-04-14 11 views
1

Ich freue mich auf ein Streudiagramm mit einer gedrehten X-Achse. Grundsätzlich möchte ich Korrelationen zwischen 2 Y-Achsen darstellen. Im Idealfall würde Ich mag die x-Achse die Zeit und die Y-Achsen stellenPlot Korrelationen zwischen 2 Y-Achsen

die Korrelationen
data <- data.frame(words = c("Aliens", "Aliens", "Constitution", "Constitution", "Entitled", "Entitled"), 
       dates = as.Date(c ("2010-01-05", "2010-02-13", "2010-04-20", "2010-06-11","2010-03-18", "2010-09-13")), 
        Rep = c(.18, .14, .16, .45, .33, .71), Dem = c(.16, .38, .24, .11, .59, .34)) 

vertreten haben, Und das ist, was ich in der Lage war, so weit zu tun. Ich denke nicht, dass es wirklich Sinn macht. Ich könnte nach Korrelation und Farbe nach Monat sortieren?

plot(x=data$dates, y=data$Rep, ylim=c(0,1.1*max(data$Rep)), 
col='blue', pch = 15, 
main='Rep Correlations stock close', xlab='date', ylab='Republican') 
axis(2, pretty(c(0, 1.1*max(data$Rep))), col='blue') 
par(new=T) 
plot(x=data$date, y=data$Dem, ylim=c(0,1.1*max(data$Dem)), 
col='green', pch = 20, 
xaxt='n', axes = F, xlab = '', ylab='') 
axis(4, pretty(c(0, 1.1*max(data$Dem))), col='green') 
mtext("Democrat",side=4) 

Irgendwelche Gedanken/Tipps?

+0

Wenn man sich die Korrelation zwischen 'Rep' und' Dem' aussehen wollen, dann yo Sie sollten ein bivariates Diagramm anstelle von 2 y-Achsen verwenden. Sie könnten Farbe verwenden, um Zeit zu kodieren, wie Sie vorschlagen, aber ein anderer schöner Weg ist mit einem Bewegungsdiagramm. Wie Sie auch erwähnen, können Sie mit der Punktgröße sogar eine 3. Variable kodieren. Dies ist ein "Bewegungsblasendiagramm". Hier ist ein Beispiel, das den Effekt sehr schön zeigt: http://code.google.com/p/google-motion-charts-with-r/ –

+0

Danke! Ich habe mit dem Bewegungsdiagramm herumgespielt, aber von dem, was ich finden konnte/Code, erlaubt die Googlviz-Version nur Zeit in Tagen oder Jahren zu sein. Mit anderen Worten, ich konnte die Daten nicht für jeden Monat abrufen. Ich bin auch nicht mit bivariaten Grundstücke vertraut. Hast du das gemeint? [Graph-Galerie] (http://addictedtor.free.fr/graphiques/graphcode.php?graph=104) – crock1255

Antwort

2

Im Anschluss an @ JohnColby Kommentar über (und How can I plot with 2 different y-axes?, http://rwiki.sciviews.org/doku.php?id=tips:graphics-base:2yaxes für Argumente, warum Sie sollten nicht Dual Plots y-Achse erstellen, wenn Sie es vermeiden können), wie etwa:

dat <- data ## best not to use reserved words -- it can cause confusion 
library(ggplot2) 
theme_update(theme_bw()) ## I prefer this theme 
## code months as a factor 
dat$month <- factor(months(dat$dates),levels=month.name) 
dat <- dat[order(dat$dates),] 
qplot(Rep,Dem,colour=month,data=dat)+ 
    geom_path(aes(group=1),colour="gray")+geom_point(alpha=0.4)+ 
    geom_text(aes(label=words),size=4) 

(Hinzufügen Linien zwischen den Punkten, dann wieder Plotten der Punkte, so dass sie durch die Linie nicht verdeckt sind, den Zusatz nett ist, aber vielleicht zu viel Unordnung für den vollständigen Datensatz sein)

enter image description here

Oder kodieren Datum als kontinuierlicher Variable

ggplot(dat,aes(Rep,Dem,colour=dates))+ 
    geom_path(aes(group=1),colour="gray")+geom_point(alpha=0.4)+ 
    geom_text(aes(label=words),size=4)+ 
    expand_limits(x=c(0,0.9)) 
ggsave("plotcorr2.png",width=6,height=3) 

enter image description here

In diesem speziellen Kontext (wo beide Variablen im gleichen Maßstab gemessen werden), gibt es auch nichts falsch mit ihnen sowohl gegen das Datum Achse Plotten:

library(reshape2) 
library(plyr) 
m1 <- rename(melt(dat,id.vars=c("words","dates","month")), 
      c(variable="party")) 

ggplot(m1,aes(dates,value,colour=party))+geom_line()+ 
    geom_text(aes(label=words),size=3)+ 
    expand_limits(x=as.Date(c("2009-12-15","2010-10-01"))) 
ggsave("plotcorr3.png",width=6,height=3) 

enter image description here

+0

Ich mag dieses nehmen. Mein Verständnis des Doppelachsenproblems war, wenn sie auf verschiedenen Skalen waren. Mein Gedanke war, dass es in diesem Fall gut gehen würde, da sie auf der gleichen Skala sind, aber ich mag es, es zu übernehmen. Danke! – crock1255

+0

Sie haben Recht. Ich habe nicht nachgedacht. Die Darstellung beider Variablen im gleichen Maßstab ist in diesem Fall in Ordnung. 'matplot' würde es in Base-R-Grafiken machen, das Umformen ist der bevorzugte Ansatz mit' ggplot'. –

Verwandte Themen