On Thu, Mar 17, 2011 at 10:23:33AM -0400, Gabor Grothendieck wrote: > On Thu, Mar 17, 2011 at 9:38 AM, David Wolfskill <r...@catwhisker.org> wrote: > ... > > But the X-axis labels show up as "large integers" -- the POSIXct values > > are apparently treated as numeric quantities for this purpose. > ... > Please cut this all down to as small a reproducible example as you can > manage and place it all in ***one*** code section that also generates > the data so that we can copy a single section of code from your post > to R. Use dput to convert data to code for this purpose.
Thank you for that. :-) The data below is a bit larger than absolutely necessary, but its much smaller than what I would normally be using -- and I was able to paste this into R directly (on a different machine, getting the same results), so I believe it will suffice. As a benefit, after going through this, I did manage to find an invocation that is able to generate an acceptable X-axis -- at least, sometimes. (Changing the size of the X11 window appears to mess things up -- at least.) But this seems rather more complicated than I expected. Anyway, here's a cut/paste of the requested code section: df <- structure(list(time = c(1297278016L, 1297278017L, 1297278018L, 1297278019L, 1297278020L, 1297278021L, 1297278022L, 1297278023L, 1297278024L, 1297278025L, 1297278026L, 1297278027L, 1297278028L, 1297278029L, 1297278030L, 1297278031L, 1297278032L, 1297278033L, 1297278034L, 1297278035L, 1297278036L, 1297278037L, 1297278038L, 1297278039L, 1297278040L, 1297278041L, 1297278042L, 1297278043L, 1297278044L, 1297278045L, 1297278046L, 1297278047L, 1297278048L, 1297278049L, 1297278050L, 1297278051L, 1297278054L, 1297278055L, 1297278056L, 1297278057L, 1297278058L, 1297278059L, 1297278060L, 1297278061L, 1297278062L, 1297278063L, 1297278064L, 1297278065L, 1297278066L, 1297278067L, 1297278068L, 1297278069L, 1297278070L, 1297278071L, 1297278072L, 1297278073L, 1297278074L, 1297278075L, 1297278076L, 1297278077L, 1297278078L, 1297278079L, 1297278080L, 1297278081L, 1297278082L, 1297278083L, 1297278084L, 1297278085L, 1297278086L, 1297278087L, 1297278088L, 1297278089L, 1297278090L, 1297278091L, 1297278092L, 1297278093L, 1297278094L, 1297278095L, 1297278096L, 1297278097L, 1297278098L, 1297278099L, 1297278100L, 1297278101L, 1297278102L), kern.cp_time_idle = c(3193265L, 3193540L, 3193771L, 3194037L, 3194267L, 3194458L, 3194572L, 3194602L, 3194602L, 3194602L, 3194602L, 3194602L, 3194603L, 3194607L, 3194617L, 3194672L, 3194802L, 3194933L, 3195067L, 3195225L, 3195378L, 3195378L, 3195418L, 3195418L, 3195418L, 3195419L, 3195419L, 3195421L, 3195422L, 3195422L, 3195422L, 3195422L, 3195422L, 3195450L, 3195450L, 3195664L, 3196432L, 3196440L, 3196871L, 3196872L, 3196874L, 3196944L, 3196944L, 3197037L, 3197130L, 3197130L, 3197132L, 3197159L, 3197159L, 3197162L, 3197166L, 3197236L, 3197367L, 3197367L, 3197497L, 3197639L, 3197782L, 3197922L, 3197946L, 3197947L, 3197954L, 3197954L, 3197954L, 3198194L, 3198194L, 3198204L, 3198205L, 3198256L, 3198265L, 3198269L, 3198269L, 3198269L, 3198269L, 3198269L, 3198270L, 3198270L, 3198270L, 3198270L, 3198270L, 3198270L, 3198270L, 3198323L, 3198323L, 3198367L, 3198631L), kern.cp_time_intr = c(5142L, 5142L, 5142L, 5143L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5145L, 5146L, 5147L, 5147L, 5147L, 5148L, 5148L, 5149L, 5150L, 5152L, 5152L, 5152L, 5153L, 5153L, 5155L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5156L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L, 5157L), kern.cp_time_nice = c(36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L), kern.cp_time_sys = c(132583L, 132591L, 132608L, 132618L, 132646L, 132667L, 132694L, 132737L, 132784L, 132825L, 132833L, 132881L, 132933L, 132977L, 133017L, 133059L, 133093L, 133121L, 133147L, 133172L, 133210L, 133220L, 133259L, 133302L, 133342L, 133388L, 133431L, 133494L, 133547L, 133557L, 133592L, 133631L, 133673L, 133713L, 133765L, 133785L, 133798L, 133808L, 133816L, 133857L, 133892L, 133951L, 133960L, 134004L, 134043L, 134109L, 134170L, 134206L, 134268L, 134329L, 134396L, 134443L, 134486L, 134501L, 134558L, 134611L, 134654L, 134704L, 134743L, 134789L, 134824L, 134871L, 134881L, 134898L, 134929L, 134994L, 135038L, 135071L, 135126L, 135202L, 135277L, 135292L, 135372L, 135440L, 135497L, 135565L, 135623L, 135639L, 135680L, 135730L, 135777L, 135825L, 135834L, 135884L, 135899L ), kern.cp_time_user = c(545975L, 545976L, 546011L, 546017L, 546041L, 546113L, 546260L, 546479L, 546728L, 546987L, 547002L, 547256L, 547498L, 547740L, 547980L, 548171L, 548293L, 548418L, 548542L, 548645L, 548753L, 548762L, 548973L, 549232L, 549510L, 549761L, 550018L, 550243L, 550541L, 550555L, 550815L, 551073L, 551354L, 551583L, 551827L, 551883L, 551893L, 551893L, 551893L, 552149L, 552407L, 552566L, 552575L, 552723L, 552901L, 553119L, 553343L, 553568L, 553796L, 554020L, 554237L, 554419L, 554530L, 554533L, 554630L, 554725L, 554823L, 554919L, 555148L, 555411L, 555673L, 555938L, 555962L, 555997L, 556261L, 556480L, 556725L, 556927L, 557157L, 557377L, 557616L, 557641L, 557919L, 558143L, 558379L, 558625L, 558877L, 558921L, 559194L, 559476L, 559723L, 559940L, 559961L, 560151L, 560156L)), .Names = c("time", "kern.cp_time_idle", "kern.cp_time_intr", "kern.cp_time_nice", "kern.cp_time_sys", "kern.cp_time_user"), class = "data.frame", row.names = c(NA, -85L)) class(df$time) <- "POSIXct" oid = "kern.cp_time_" pat = paste("^", oid, sep = "") col_vec = c("red", "yellow", "green", "blue") cpu_states <- c("sys", "intr", "user", "nice", "idle") require(zoo) df_d <- diff(zoo(df[, grep(pat, names(df))], order.by = df$time)) d_range <- range(index(df_d)) sub <- paste("[", strftime(d_range[1], format = "%c"), "-", strftime(d_range[2], format = "%c"), "]") df_pct <- sweep(df_d, 1, apply(df_d, 1, sum), "/")[, paste(oid, cpu_states[1:4], sep = "")] * 100 title <- "make -j4 -DNOCLEAN buildworld" barplot(df_pct, border = NA, col = col_vec, space = 0, main = title, sub = sub, ylab = "CPU %", ylim = c(0, 100), xlab = "Time") barplot(df_pct, border = NA, col = col_vec, space = 0, main = title, sub = sub, ylab = "CPU %", ylim = c(0, 100), xlab = "Time", names.arg = index(df_d)) traceback() barplot(df_pct, border = NA, col = col_vec, space = 0, main = title, sub = sub, ylab = "CPU %", ylim = c(0, 100), xlab = "Time", axisnames = FALSE) axis.POSIXct(1, index(df_d)) barplot(df_pct, border = NA, col = col_vec, space = 0, main = title, sub = sub, ylab = "CPU %", ylim = c(0, 100), xlab = "Time", axisnames = FALSE) axis(1, at = pretty(index(df_d)) - as.numeric(d_range[1]), labels = strftime(as.POSIXct(pretty(index(df_d)), origin = "1970-01-01", tz = "UTC"), format = "%X")) Some comments: * The first attempt (barplot invoked with default X-axis labels) yields X-axis labels: 1297278017 1297278035 1297278055 1297278073 1297278091 * The second (barplot() invoked with "names.arg = index(df_d)" yielded the same default X-axis labels, along with: Warning messages: 1: In plot.window(xlim, ylim, log = log, ...) : "names" is not a graphical parameter 2: In axis(if (horiz) 2 else 1, at = at.l, labels = names.arg, lty = axis.lty, : "names" is not a graphical parameter 3: In title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...) : "names" is not a graphical parameter 4: In axis(if (horiz) 1 else 2, cex.axis = cex.axis, ...) : "names" is not a graphical parameter > traceback() No traceback available * The third attempt (invoking barplot() with "axisnames = FALSE", then invoking "axis.POSIXct(1, index(df_d))") yielded an X-axis label: 59:56 * The fourth attempt (invoking barplot() with "axisnames = FALSE", then invoking "axis()" after studying "axis.POSIXct" for a bit (to try to use the parts of it that seemed to be useful for my present purposes) yielded X-axis labels: 11:00:20 11:00:40 11:01:00 11:01:20 11:01:4 As thos times reflect my timezone, there will likely be differences (explainable by that observation) for others. I hope to learn what I'm misunderstanding. I suspect that some of this may be "cultural," in a sense: I work almost exclusively in UNIX (FreeBSD) environments, and am accustomed to using (what R calls a) "POSIXct" as my preferred form for date/timestamps for manipulatio0n; the apparent (frequent) requirement that I specify the "origin" feels bizarre, as it's always 01 Jan 1970 00:00:00 UTC. Thus, when I think of a date/time stamp, I tend to think in terms of time_t, and think of other representations as just that: merely representations of what is "really" a time_t (or POSIXct). :-} (Indeed: I wrote the script that generates the timestamp in the data in question; it does that by invoking "date +%s".) Thanks! Peace, david -- David H. Wolfskill r...@catwhisker.org Depriving a girl or boy of an opportunity for education is evil. See http://www.catwhisker.org/~david/publickey.gpg for my public key.
pgpmPSwyzn10t.pgp
Description: PGP signature
______________________________________________ R-help@r-project.org mailing list 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.