2011-10-15 5 views
5

Estoy tratando de crear una gráfica de frecuencia del número de apariciones de un tipo de gráfico por año. He jugado con ggplot2 por un tiempo, pero creo que esto está por encima de mi cabeza (estoy empezando con R)Múltiples líneas de frecuencia en el mismo gráfico donde y es un valor de carácter

He adjuntado un esquema de cómo me gustaría que fuera el resultado. Uno de los otros problemas con los que me estoy cruzando es que hay muchos años en los que los tipos de gráfico no aparecen. ¿Hay alguna forma de excluir el tipo de gráfico si no aparece ese año?

p. Ej. en 1940 no hay un "sociograma" No quiero tener un montón de líneas 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)) 

Por favor, hágamelo saber si hay algo que no tiene sentido. ¡StackOverflow se está convirtiendo rápidamente en uno de mis sitios favoritos!

gracias, Jon


Here's a working idea of what I have so far. Esto es lo que tengo hasta ahora ... Gracias de nuevo por toda su ayuda!

Y así es como lo hice (No puedo compartir el archivo de datos todavía, ya que es algo que esperamos usar para una publicación, pero el área ggplot es probablemente la más interesante, aunque no lo hice realmente hacer nada nuevo/que no fue discutido en el 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

No tiene sentido tratar de pegar una variable de fecha en una matriz, incluso después de que reemplaces la derecha-parén faltante. –

+0

No estoy seguro de que sea la razón por la que no está funcionando ... – crock1255

+0

Ambos son "personajes" en este momento. Intentar calcular las densidades (que parece ser su objetivo) en los valores de los caracteres puede ser difícil. –

Respuesta

1

esto podría ser una trama de datos más interesante experimentar con:

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) 

pensé trabajar con un ejemplo de la ayuda (la página stat_density) funcionaría, pero no:

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

Sin embargo un ejemplo que encontré en una búsqueda de los archivos de HTE encontró una publicación por @Hadley Wickham que hace el trabajo:

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

enter image description here

+0

Gracias. Esto fue realmente útil. Especialmente al formatear la fecha. ¡Gracias de nuevo! – crock1255

+0

Veo que descubrió la transparencia e hizo el gráfico aún mejor con un argumento alfa. Buen trabajo. –

Cuestiones relacionadas