Несколько частотных линий на одном графике, где y - символьное значение - PullRequest
5 голосов
/ 15 октября 2011

Я пытаюсь создать частотный график числа появлений типа графика по годам. Некоторое время я играл с ggplot2, но думаю, что это над моей головой (я только начинаю с R)

Я приложил схему того, как должен выглядеть результат. Еще одна проблема, с которой я сталкиваюсь, заключается в том, что многие годы типы графиков не отображаются. Есть ли способ исключить тип графика, если он не отображается в этом году?

например. в 1940 году нет "социограммы", я не хочу, чтобы в 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))

Пожалуйста, дайте мне знать, если что-то не имеет смысла. StackOverflow быстро становится одним из моих любимых сайтов!

Спасибо, Jon


Here's a working idea of what I have so far. Вот что у меня так далеко ... Еще раз спасибо за вашу помощь!

А вот как я это сделал (я пока не могу поделиться файлом данных, так как мы надеемся использовать его для публикации, но область ggplot, вероятно, более интересна, хотя на самом деле я этого не делал сделать что-нибудь новое / что не обсуждалось в посте):

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

1 Ответ

1 голос
/ 16 октября 2011

Это может быть более интересный фрейм данных, с которым можно поэкспериментировать:

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)

Я думал, что работа с примером на странице справки (stat_density) будет работать, но это не так:

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

Однако пример, который я нашел в поиске архивов, нашел сообщение @Hadley Wickham, которое действительно работает:

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...