2011-10-15 30 views
5

Tôi đang cố gắng tạo một âm mưu tần suất về số lần xuất hiện của loại biểu đồ theo năm. Tôi đã chơi xung quanh với ggplot2 trong một thời gian, nhưng tôi nghĩ rằng điều này là trên đầu của tôi (Tôi chỉ mới bắt đầu với R)Nhiều đường tần số trên cùng một biểu đồ trong đó y là một giá trị ký tự

Tôi kèm theo sơ đồ về những gì tôi muốn kết quả. Một trong những vấn đề khác mà tôi đang gặp phải là có nhiều năm mà các loại biểu đồ không xuất hiện. Có cách nào để loại trừ loại biểu đồ nếu nó không xuất hiện trong năm đó không?

ví dụ: vào năm 1940 không có "sociogram" Tôi không muốn có một loạt các dòng tại 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)) 

Xin vui lòng cho tôi biết nếu một cái gì đó không có ý nghĩa. StackOverflow nhanh chóng trở thành một trong những trang web yêu thích của tôi!

Thank, Jon


Here's a working idea of what I have so far. Dưới đây là những gì tôi có cho đến nay ... Cảm ơn bạn một lần nữa cho tất cả sự giúp đỡ của bạn! Và đây là cách tôi đã làm (tôi không thể chia sẻ tệp dữ liệu, vì đó là điều chúng tôi hy vọng sử dụng nó để xuất bản, nhưng khu vực ggplot có lẽ thú vị hơn, mặc dù tôi không thực sự làm bất cứ điều gì mới/mà không được thảo luận trong bài):

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

Nó không có ý nghĩa cố gắng gắn bó một biến ngày vào một ma trận, ngay cả sau khi bạn thay thế dấu ngoặc kép phải thiếu. –

+0

Tôi không chắc đó là lý do nó không hoạt động ... – crock1255

+0

Cả hai đều là "nhân vật" vào lúc này. Cố gắng tính toán mật độ (có vẻ là mục tiêu của bạn) về các giá trị ký tự có thể khó khăn. –

Trả lời

1

Đây có thể là một dataframe thú vị hơn để thử nghiệm với:

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) 

tôi nghĩ làm việc với một ví dụ trong sự giúp đỡ (trang stat_density) sẽ hoạt động nhưng không hoạt động:

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

Tuy nhiên một ví dụ tôi tìm thấy trong một tìm kiếm tài liệu lưu trữ HTE tìm thấy một bài viết bởi @Hadley Wickham mà không làm việc:

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

enter image description here

+0

Cảm ơn bạn. Điều này thực sự hữu ích. Đặc biệt là nhận định dạng ngày tháng. Cám ơn bạn một lần nữa! – crock1255

+0

Tôi thấy bạn đã khám phá tính minh bạch và làm cho biểu đồ tốt hơn nữa với một đối số alpha. Công việc tốt đẹp. –

Các vấn đề liên quan