Hi Charlie, Thanks. This is helpful. As mentioned in my original question, I want to be able to plot a few such charts on the same page, say a 2 x 2 grid with such a chart for each of 4 different stocks. Using your solution I accomplished this by making a list pLst of your ggplots and then calling cowplot::plot_grid( plotlist=pLst, nrow=2, ncol=2 ) That worked fine.
The one issue I have is that in the ggplot you suggest, the price and volume facets are the same size. I would like them to be different sizes (e.g. the volume facet at the bottom is generally shown smaller than the facet above it in these types of charts.) I tried to find out how to do it but didn't succeed. I found a couple of relevant discussions (including Hadley writing that he did not think it was a useful feature. :-() https://github.com/tidyverse/ggplot2/issues/566 and an ancient one where someone seems to have been able to get a heights parameter working in a call to facet_grid but it did not work for me. https://kohske.wordpress.com/2010/12/25/adjusting-the-relative-space-of-a-facet-grid/ Thanks again, Eric p.s. Joshua thanks for your suggestions, but I was hoping for a ggplot solution. On Fri, Jan 19, 2018 at 6:33 PM, Charlie Redmon <redm...@gmail.com> wrote: > So the general strategy for getting these into separate panels in ggplot > is to have a single variable that will be your response and a factor > variable that indexes which original variable it came from. This can be > accomplished in many ways, but the way I use is with the melt() function in > the reshape2 package. > For example, > > library(reshape2) > plotDF <- melt(SPYdf, > id.vars="Date", # variables to replicate > measure.vars=c("close", "volume"), # variables to > create index from > variable.name="parameter", # name of new variable > for index > value.name="resp") # name of what will be your > response variable > > Now the ggplot2 code: > > library(ggplot2) > ggplot(plotDF, aes(x=Date, y=resp)) + > facet_wrap(~parameter, ncol=1, scales="free") + > geom_line() > > > Hope that does the trick! > > Charlie > > > > On 01/18/2018 02:11 PM, Eric Berger wrote: > >> Hi Charlie, >> I am comfortable to put the data in any way that works best. Here are two >> possibilities: an xts and a data frame. >> >> library(quantmod) >> quantmod::getSymbols("SPY") # creates xts variable SPY >> SPYxts <- SPY[,c("SPY.Close","SPY.Volume")] >> SPYdf <- data.frame(Date=index(SPYxts),close=as.numeric(SPYxts$SPY.Cl >> ose), >> volume=as.numeric(SPYxts$SPY.Volume)) >> rownames(SPYdf) <- NULL >> >> head(SPYxts) >> head(SPYdf) >> >> # SPY.Close SPY.Volume >> #2007-01-03 141.37 94807600 >> #2007-01-04 141.67 69620600 >> #2007-01-05 140.54 76645300 >> #2007-01-08 141.19 71655000 >> #2007-01-09 141.07 75680100 >> #2007-01-10 141.54 72428000 >> >> # Date close volume >> #1 2007-01-03 141.37 94807600 >> #2 2007-01-04 141.67 69620600 >> #3 2007-01-05 140.54 76645300 >> #4 2007-01-08 141.19 71655000 >> #5 2007-01-09 141.07 75680100 >> #6 2007-01-10 141.54 72428000 >> >> Thanks, >> Eric >> >> >> >> On Thu, Jan 18, 2018 at 8:00 PM, Charlie Redmon <redm...@gmail.com >> <mailto:redm...@gmail.com>> wrote: >> >> Could you provide some information on your data structure (e.g., >> are the two time series in separate columns in the data)? The >> solution is fairly straightforward once you have the data in the >> right structure. And I do not think tidyquant is necessary for >> what you want. >> >> Best, >> Charlie >> >> -- Charles Redmon >> GRA, Center for Research Methods and Data Analysis >> PhD Student, Department of Linguistics >> University of Kansas >> Lawrence, KS, USA >> >> >> > -- > Charles Redmon > GRA, Center for Research Methods and Data Analysis > PhD Student, Department of Linguistics > University of Kansas > Lawrence, KS, USA > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.