My code assumes that DAX is a ts object, as in your original post. On Tue, May 30, 2023 at 2:06 PM Eric Berger <ericjber...@gmail.com> wrote: > > Untested but why not > > a <- cbind(log(DAX), exp(diff(log(DAX))), exp(diff(diff(log(DAX))))) > colnames(a) <- c("logDAX", "vel", "accel") > plot(a) > > > On Tue, May 30, 2023 at 1:46 PM Spencer Graves > <spencer.gra...@effectivedefense.org> wrote: > > > > > > > > On 5/29/23 2:37 AM, Eric Berger wrote: > > > How about this: > > > > > > a <- cbind(AirPassengers, diff(log(AirPassengers)), > > > diff(diff(log(AirPassengers)))) > > > colnames(a)[2:3] <- c("percent increase", "acceleration") > > > plot(a, xlab="year", main="AirPassengers") > > > > > > My real problem is more difficult: I'm analyzing CO2 data from > > Our > > World in Data (https://ourworldindata.org/co2-emissions), and I need to > > plot the CO2 data on a log scale but velocity and acceleration on linear > > scales. The following is comparable: > > > > > > str(DAX <- EuStockMarkets[, 'DAX']) > > str(DAX. <- cbind(DAX, diff(log(DAX)), > > diff(diff(log(DAX))))) > > colnames(DAX.)[2:3] <- c('vel', 'accel') > > plot(DAX.) > > > > > > I want the first of the three panels to plot on the log scale, but > > the other two on linear scales. The obvious attempt does not work: > > > > > > plot(DAX., log=c('y', '', '')) > > #Error in length(log) && log != "" : > > # 'length = 3' in coercion to 'logical(1)' > > > > > > Trying to construct my own axes isn't easy, either: > > > > > > str(logDAX <- cbind(log(DAX), diff(log(DAX)), > > diff(diff(log(DAX))))) > > colnames(logDAX) <- c('logDAX', 'vel', 'accel') > > plot(logDAX, axes=FALSE) > > axis(1) > > axis(2) > > > > > > I'm thinking of creating my own copy of "plot.ts", and changing > > it so > > it accepts the "log" argument as a vector of length equal to ncol of the > > ts object to be plotted AND returning an object that would allow a user > > to call "axis" ncol times. > > > > > > Suggestions? > > > > > > Thanks, > > Spencer Graves > > > > > > > > HTH, > > > Eric > > > > > > > > > On Mon, May 29, 2023 at 7:57 AM Spencer Graves > > > <spencer.gra...@effectivedefense.org> wrote: > > >> > > >> Hello, All: > > >> > > >> > > >> I want to plot level, velocity, and acceleration in three > > >> panels with > > >> only one x axis. The code below does this using "layout". However, I > > >> want the three plot areas to be of equal size, and this won't do that: > > >> If I stretch the plot vertically, the relative sizes of the three panels > > >> changes. There's probably a way to do this with ggplot2, but I have yet > > >> to find it. > > >> > > >> > > >> Suggestions? > > >> Thanks, > > >> Spencer Graves > > >> > > >> > > >> str(AirTime <- as.numeric(time(AirPassengers))) > > >> str(AP <- as.numeric(AirPassengers)) > > >> > > >> def.par <- par(no.readonly = TRUE) # save default, for resetting... > > >> (mat3x1 <- matrix(1:3, 3)) > > >> plot3x1 <- layout(mat3x1, heights=c(1.4, 1, 1.5)) > > >> layout.show(plot3x1) > > >> > > >> par(mar=c(0, 4.1, 4.1, 2.1)) > > >> plot(AirTime, AP, log='y', type='l', axes=FALSE, > > >> main='AirPassengers', ylab='AirPassengers') > > >> box(col='grey') > > >> axis(2, las=1) > > >> > > >> par(mar=c(0, 4.1, 0, 2.1)) > > >> vAP <- diff(log(AP)) > > >> plot(tail(AirTime, -1), vAP, type='l', > > >> ylab='percent increase', axes=FALSE) > > >> box(col='grey') > > >> axis(2, las=1) > > >> > > >> par(mar=c(5.1, 4.1, 0, 2.1)) > > >> plot(tail(AirTime, -2), diff(vAP), type='l', > > >> ylab='acceleration', xlab='year', > > >> las=1) > > >> box(col='grey') > > >> > > >> par(def.par) > > >> > > >> ______________________________________________ > > >> 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.
______________________________________________ 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.