задайте прекъсвания на осите в R с POSIX време

Имам две линейни графики, създадени от този набор от данни https://www.dropbox.com/s/77epslia52odt7m/undervotes_new.csv

Те са графики на кумулативните гласове въз основа на вида на гласуването. Исках да използвам фасети на ggplot, за да създам кумулативни графики на гласуване въз основа на вида на подадената бюлетина. Но това наистина прецака този проблем, който не можах да разбера как да поправя: Защо `cumsum` не работи в рамките на групи или аспекти в ggplot?

И така, работата ми е просто да ги начертая отделно и да ги комбинирам с gridarrange. Но осите се различават по своите точки на прекъсване. Знам, че могат да бъдат зададени ръчно, но имам проблеми с това, защото са във формат POSIX?

Как мога да настроя прекъсванията (и в идеалния случай обхвата) на двете графики да бъдат "Nov 06, Nov 07, Nov 08" и т.н. и т.н. и на двете графики?

Благодаря,

library(reshape2)
library(ggplot2)
library(gridExtra)
library(grid)

#transform some variables
Data$Net<-as.numeric(as.character(Data$Net))
Data$CreateDate<-strptime(as.character(Data$CreateDate), "%m/%d/%Y %H:%M")
Data$CreateDate<-as.POSIXlt(Data$CreateDate)

#Get rid of nasty NAs
Data<-Data[complete.cases(Data[,c(15)]),]

##Subset by candidate
Datasubobama<-Data[Data$BallotName=="Barack Obama",]
Datasubromney<-Data[Data$BallotName=="Mitt Romney",]

##Order by date
Datasubobama<-Datasubobama[order(Datasubobama$CreateDate),] #order by date
Datasubromney<-Datasubromney[order(Datasubromney$CreateDate),] #order by date

##Get rid of outliers
Datasubobama<-Datasubobama[1:380,]
Datasubromney<-Datasubromney[1:345,]

##Subset into types of votes
DatasubobamaC<-Datasubobama[Datasubobama$ResultsType=="Certified Votes",]
DatasubobamaP<-Datasubobama[Datasubobama$ResultsType=="Provisional Votes Counted",]
DatasubromneyC<-Datasubromney[Datasubromney$ResultsType=="Certified Votes",]
DatasubromneyP<-Datasubromney[Datasubromney$ResultsType=="Provisional Votes Counted",]

####This is obama/romney certified votes only
cumsumC<-ggplot(DatasubobamaC, aes(x=as.POSIXlt(DatasubobamaC$CreateDate),  y=cumsum(DatasubobamaC$Net)))
cumsumC<-cumsumC+geom_line(color="blue")
cumsumC<-cumsumC+geom_point(color="black")
cumsumC<-cumsumC+geom_line(data=DatasubromneyC, color="red",     aes(x=as.POSIXlt(DatasubromneyC$CreateDate), y=cumsum(DatasubromneyC$Net)))
cumsumC<-cumsumC+geom_point(data=DatasubromneyC,color="black",     aes(x=as.POSIXlt(DatasubromneyC$CreateDate), y=cumsum(DatasubromneyC$Net)))
cumsumC<-cumsumC+ggtitle("Obama (Blue) and Romney (Red) Cumulative Sum [Certified]")
cumsumC<-cumsumC+xlab("Date")
cumsumC<-cumsumC+ylab("Net Votes")
cumsumC<-cumsumC+theme(strip.text.y = element_text(size = 20, color="black"))
cumsumC<-cumsumC+theme(plot.title=element_text(size=20))
cumsumC<-cumsumC+theme(axis.title.x = element_text(size=20))
cumsumC<-cumsumC+theme(axis.title.y = element_text(size=20, vjust=1.5,))
cumsumC<-cumsumC+theme(axis.text.x=element_text(size=15))
cumsumC<-cumsumC+theme(axis.text.y=element_text(size=15))
cumsumC<-cumsumC+theme(axis.ticks.margin=unit(c(.05,.05),'cm'))
cumsumC<-cumsumC+theme(plot.margin=unit(c(.3,1,.3,1),"cm"))
cumsumC

#This is the same for Provisional Only
cumsumP<-ggplot(DatasubobamaP, aes(x=as.POSIXlt(DatasubobamaP$CreateDate),     y=cumsum(DatasubobamaP$Net)))
cumsumP<-cumsumP+geom_line(color="blue")
cumsumP<-cumsumP+geom_point(color="black")
cumsumP<-cumsumP+geom_line(data=DatasubromneyP, color="red",      aes(x=as.POSIXlt(DatasubromneyP$CreateDate), y=cumsum(DatasubromneyP$Net)))
cumsumP<-cumsumP+geom_point(data=DatasubromneyP,color="black",         aes(x=as.POSIXlt(DatasubromneyP$CreateDate), y=cumsum(DatasubromneyP$Net)))
cumsumP<-cumsumP+ggtitle("Obama (Blue) and Romney (Red) Cumulative Sum [Provisional]")
cumsumP<-cumsumP+xlab("Date")
cumsumP<-cumsumP+ylab("Net Votes")
cumsumP<-cumsumP+theme(strip.text.y = element_text(size = 20, color="black"))
cumsumP<-cumsumP+theme(plot.title=element_text(size=20))
cumsumP<-cumsumP+theme(axis.title.x = element_text(size=20))
cumsumP<-cumsumP+theme(axis.title.y = element_text(size=20, vjust=1.5,))
cumsumP<-cumsumP+theme(axis.text.x=element_text(size=15))
cumsumP<-cumsumP+theme(axis.text.y=element_text(size=15))
cumsumP<-cumsumP+theme(axis.ticks.margin=unit(c(.05,.05),'cm'))
cumsumP<-cumsumP+theme(plot.margin=unit(c(.3,1,.3,1),"cm"))
cumsumP

gridcumsum<-grid.arrange(cumsumC,cumsumP)

person PSQ    schedule 18.08.2014    source източник
comment
Няма нужда от grid.arrange. Просто използвайте една от функциите split-apply-combine (ddply от пакета plyr е лесна за използване), за да изчислите кумулативните суми по групи и след това да фасетирате графиката. Това решава проблема ви с оста и създава по-добре изглеждаща графика.   -  person Roland    schedule 18.08.2014
comment
не се ли изморявате да пишете cumsumP ‹- cumsumP + ...?   -  person rawr    schedule 18.08.2014
comment
@Roland, простете ми невежеството, но всеки път, когато опитвах решение на проблема с фасетирането, не работеше. можете ли да опитате малко как ще изглеждат вашите предложения?   -  person PSQ    schedule 18.08.2014
comment
Създайте минимално възпроизводим пример и може да се притеснявам.   -  person Roland    schedule 18.08.2014
comment
@rawr, аз го правя. наистина. просто лош навик предполагам.   -  person PSQ    schedule 18.08.2014
comment
@Roland, предоставянето на данните и кода не е ли достатъчно?   -  person PSQ    schedule 18.08.2014
comment
Изглежда не разбирате думата минимален и не обичам да извличам данни от някакъв dropbox.   -  person Roland    schedule 18.08.2014
comment
@Roland Не че искам да влизам в спор с непознат в интернет, но вие не правите много, за да посрещнете нови хора в R. Може би вместо това можете просто да ми кажете как да използвам scale_y_continuous(breaks=(c (6 септември, 7 септември и т.н.))), за да постигна това, от което се нуждая, по начин, който има смисъл с моето ниво на разбиране на R. Благодаря.   -  person PSQ    schedule 18.08.2014
comment
@PSQ Аз (и други) отговарям на въпроси тук безплатно в свободното си време. Ако затруднявате отговора на въпроса си, например като включвате много код, който не е пряко свързан с проблема (какво значение има обработката на theme или NA или премахването на извънредни стойности тук), ще отида и ще отговоря на някои други въпрос вместо това. Да можеш да създадеш минимален възпроизводим пример е много полезно умение. Доста често сами ще намерите решението в процеса на създаване. Както и да е, ако искате отговори, трябва да ги направите възможно най-лесни за отговор.   -  person Roland    schedule 19.08.2014


Отговори (1)


Познайте какво, намерих отговор за вас: искате да използвате

мащаб_x_датачас

http://docs.ggplot2.org/0.9.3.1/scale_datetime.html

Той е супер спретнат и прави точно това, което искате. Но знам, че сте нов в R, така че е добре. Късмет!

Благодаря и чудесна работа при намирането на това.

person PSQ    schedule 18.08.2014