2011-10-15 17 views
5

Sto provando a creare un diagramma di frequenza del numero di aspetti di un tipo di grafico per anno. Ho giocato con ggplot2 per un po ', ma penso che sia finita (sono appena iniziato con R)Linee di frequenza multiple sullo stesso grafico dove y è un valore di carattere

Ho allegato uno schema di quello che vorrei fosse il risultato. Uno degli altri problemi che sto incontrando è che ci sono molti anni in cui i tipi di grafico non appaiono. C'è un modo per escludere il tipo di grafico se non appare quell'anno?

ad es. nel 1940, non v'è alcuna "sociogramma" Non voglio avere un gruppo di linee a 0 ...

year <- c("1940","1940","1940","1940","1940","1940","1940","1940","1940","1940","1940","1941","1941","1941","1941","1941","1941","1941","1941","1941","1941","1941","1941","1941","1941") 
type <- c("Line","Column", "Stacked Column", "Scatter with line", "Scatter with line", "Scatter with line", "Scatter with line", "Map with distribution","Line","Line","Line","Bar","Bar","Stacked bar","Column","Column","Sociogram","Sociogram","Column","Column","Column","Line","Line","Line","Line") 
ytmatrix <- cbind(as.Date(as.character(year), "%Y", type)) 

Si prega di farmi sapere se qualcosa non ha senso. StackOverflow sta rapidamente diventando uno dei miei siti preferiti!

Grazie, Jon


Here's a working idea of what I have so far. Ecco quello che ho finora ... Grazie ancora per tutto il vostro aiuto!

Ed ecco come l'ho fatto (non posso ancora condividere il file di dati, dato che è qualcosa che speriamo di usarlo per una pubblicazione, ma l'area di ggplot è probabilmente la più interessante, anche se non l'ho davvero fare qualcosa di nuovo/che non è stato discusso nel post):

AJS = read.csv(data) #read in file 
Type = AJS[,17] #select and name "Type" column from csv 
Year = AJS[,13] #select and name "Year" column from csv 
Year = substr(Year,9,12) #get rid of junk from year column 
Year = as.Date(Year, "%Y") #convert the year character to a date 
Year = format(Year, "%Y") #get rid of the dummy month and day 
Type = as.data.frame(Type) #create data frame 
yt <- cbind(Year,Type) #bind the year and type together 
library(ggplot2) 

trial <- ggplot(yt, aes(Year,..count.., group= Type)) + #plot the data followed by aes(x- axis, y-axis, group the lines) 
geom_density(alpha = 0.25, aes(fill=Type)) + 
opts(axis.text.x = theme_text(angle = 90, hjust = 0)) + #adjust the x axis ticks to horizontal 
opts(title = expression("Trends in the Use of Visualizations in The American Journal of Sociology")) + #Add title 
scale_y_continuous('Appearances (10 or more)') #change Y-axis label 
trial 
+0

Non ha senso cercare attaccare una variabile Data in una matrice, anche dopo aver sostituito il parente destro mancante. –

+0

Non sono sicuro che sia la ragione per cui non funziona ... – crock1255

+0

Sono entrambi "personaggi" al momento. Tentare di calcolare le densità (che sembra essere il tuo obiettivo) sui valori dei personaggi può essere difficile. –

risposta

1

questo potrebbe essere un dataframe più interessante di sperimentare:

df1 <- data.frame(date = as.Date(10*365*rbeta(100, .5, .1)),group="a") 
df2 <- data.frame(date = as.Date(10*365*rbeta(50, .1, .5)),group="b") 
df3 <- data.frame(date = as.Date(10*365*rbeta(25, 3,3)),group="c") 
dfrm <- rbind(df1,df2,df3) 

ho pensato che lavorare con un esempio nella guida (stat_density) funzionerebbe, ma non è così:

m <- ggplot(dfrm, aes(x=date), group=group) 
m+ geom_histogram(aes(y=..density..)) + geom_density(fill=NA, colour="black") 

Tuttavia un esempio che ho trovato in una ricerca degli archivi hte trovato un post da @Hadley Wickham che funziona:

m+ geom_density(aes(fill=group), colour="black") 

enter image description here

+0

Grazie. Questo è stato davvero utile. Soprattutto ottenere la formattazione della data. Grazie ancora! – crock1255

+0

Vedo che hai scoperto la trasparenza e reso il grafico ancora migliore con un argomento alfa. Bel lavoro. –

Problemi correlati