Thanks for the reminder about lattice! I did some searching and there's
a good example of manipulating the size of subplots using the `position`
argument (see pp. 202-203 in the Trellis Users Guide:
http://ml.stat.purdue.edu/stat695t/writings/Trellis.User.pdf). This is
not within the paneling environment with the headers like in other
trellis plots though, so you'll have to do a bit more digging to see how
to get that to work if you need those headers.
Best,
Charlie
On 01/20/2018 03:17 PM, Bert Gunter wrote:
That (the need for base graphics) is false. It certainly **can** be
done in base graphics -- see ?layout for a perhaps more
straightforward way to do it along the lines you suggest.
However both lattice and ggplot are based on grid graphics, which has
a similar but slightly more flexible ?grid.layout function which would
allow one to size and place subsequent ggplot or lattice graphs in an
arbitrary layout as you have described (iiuc) for the base graphics case.
Perhaps even simpler would be to use the "position" argument of the
print.trellis() function to locate trellis plots. Maybe ggplot() has
something similar.
In any case, the underlying grid graphics functionality allows
**much** greater fine control of graphical elements (including
rotation, for example) -- at the cost of greater complexity. I would
agree that doing it from scratch using base grid functions is most
likely overkill here, though. But it's there.
IMHO only, the base graphics system was great in its time, but its
time has passed. Grid graphics is much more powerful because it is
objects based -- that is, grid graphs are objects that can be saved,
modified, and even interacted with in flexible ways. Lattice and
ggplot incarnations take advantage of this, giving them more power and
flexibility than the base graphics capabilities can muster.
I repeat -- IMHO only! Feel free to disagree. I don't want to start
any flame wars here.
Cheers,
Bert
Bert Gunter
"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
On Sat, Jan 20, 2018 at 12:19 PM, Charlie Redmon <redm...@gmail.com
<mailto:redm...@gmail.com>> wrote:
For this kind of control you will probably need to move to base
graphics
and utilize the `fig` argument in par(), in which case you would
want to
run the plot() command twice: once with your first outcome and
once with
your second, changing the par() settings before each one to
control the
size.
On 01/19/2018 01:39 PM, Eric Berger wrote:
> 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
<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/
<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 <mailto:redm...@gmail.com>
> <mailto:redm...@gmail.com <mailto: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 <http://variable.name>
<http://variable.name>="parameter", # name of new
> variable for index
> value.name <http://value.name> <http://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.Close),
> 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
<tel:07%C2%A0%20%C2%A075680100>
> #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 <tel:07%2075680100>
> #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>
<mailto:redm...@gmail.com <mailto:redm...@gmail.com>>
> <mailto:redm...@gmail.com <mailto:redm...@gmail.com>
<mailto: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
>
>
--
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 <mailto:R-help@r-project.org> mailing list --
To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
<https://stat.ethz.ch/mailman/listinfo/r-help>
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
<http://www.R-project.org/posting-guide.html>
and provide commented, minimal, self-contained, reproducible code.
--
Charles Redmon
GRA, Center for Research Methods and Data Analysis
PhD Student, Department of Linguistics
University of Kansas
Lawrence, KS, USA
______________________________________________
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.