2013-12-19 15 views
14

Ich sah eine Grafik in Excel generiert und ich frage mich, ob R könnte es auch tun. this picture is essentially a visualization of a crosstab table comparing the days of the week to preffered meals on that day and counting the number of people that fall within those categoriesVisualisierung Kreuztabellen mit einer Grafik in R

Dieses Bild ist im Wesentlichen eine Visualisierung einer Kreuztabelle, die die Wochentage mit den bevorzugten Mahlzeiten an diesem Tag vergleicht und die Anzahl der Personen zählt, die in diese Kategorien fallen.

Ich habe auf einigen R-Bubble-Charts gelesen, aber ich habe noch einen solchen zu sehen. Kann mir jemand ein Paket oder eine Website zeigen, die erklärt, wie ich eine Handlung wie diese erstellen kann?

+0

Vielleicht [meine Antwort hier] (http://stats.stackexchange.com/a/34778/13474) könnte Ihnen helfen. – A5C1D2H2I1M1N2O1R2T1

Antwort

16

Mit Hadley Wickhams ggplot2:

library(ggplot2)       

# Set up the vectors       
days <- c("Mon","Tues","Wed","Thurs","Fri") 
slots <- c("Coffee/Breakfast","Lunch","Happy Hour","Dinner") 

# Create the data frame 
df <- expand.grid(days, slots) 
df$value <- c(1,1,1,1,2,1,1,NA,NA,1,4,4,7,4,1,5,6,14,5,1)  

#Plot the Data 
g <- ggplot(df, aes(Var1, Var2)) + geom_point(aes(size = value), colour = "green") + theme_bw() + xlab("") + ylab("") 
g + scale_size_continuous(range=c(10,30)) + geom_text(aes(label = value)) 

enter image description here

Haben Sie dafür, dass die Achsenlinien durch die Kreise gehen? Auch die Grüns sind etwas anders und der Etikettentext ist schwarz statt weiß.

+0

ist es perfekt, danke. nur eine Frage, gibt es eine Möglichkeit, die Formen zu ändern, die Kreise sehen ein bisschen "zerzaust" um die Ränder. Kann die Funktion einen glatten Kreis ergeben? Wenn nicht, dann ist das in Ordnung – CadisEtRama

+1

Mit 'ggsave' können Sie die Punkte pro Zoll einstellen. Der Standardwert ist 72 dpi, mit 'ggsave (file =" Dateiname.png ", dpi = 300)' können Sie den Wert für dpi auf einen höheren Wert setzen. Dies könnte Ihr Problem lösen. – Jaap