>>>>> Duncan Murdoch <murdoch.dun...@gmail.com> >>>>> on Sun, 29 Jan 2017 06:32:27 -0500 writes:
> On 29/01/2017 12:05 AM, Jim Lemon wrote: >> Hi Richard, I think there may be something amiss in the >> plot.table function. As you note, changing the class of >> fr to array produces a more sensible plot, as does Bert's >> "as.vector". Yet inside plot.table we find: >> >> plot(x0, unclass(x), ... >> >> and that should produce an array: >> >> class(unclass(fr)) [1] "array" >> >> The plot.table function looks like it should produce the >> plot you want, but it doesn't. I think (therefore I am >> probably wrong) that a 1D table is handled in the same >> way as multiD table rather than being squeezed into a >> vector. > I think the issue is that Axis() is called without > removing the class. Axis.table sets ticks based on the > names of the table. > Duncan Murdoch yes indeed! So this answers Rich Heiberger's question. The example stems from a time long before there was a plot.table() method, and even longer before plot.default() had started using Axis() and its methods. So a much nicer example for the R-intro -- committed a few minutes ago -- is making use of the plot.table() S3 method : d <- outer(0:9, 0:9) fr <- table(outer(d, d, "-")) plot(fr, type="h", xlab="Determinant", ylab="Frequency") So this fulfills Rich's recommendation. Martin >> On Sun, Jan 29, 2017 at 11:19 AM, Bert Gunter <bgunter.4...@gmail.com> wrote: >>> Rich: >>> >>> Simpler: Just lose the "table" class. >>> >>> plot(as.numeric(names(fr)), as.vector(fr), type="h", >>> xlab="Determinant", ylab="Frequency") >>> >>> However, I'm no less puzzled by the "strange" behavior than you. >>> >>> In addition, it's probably worth noting that xyplot in lattice (and no >>> doubt ggplot,too) does not have this problem (as I'm sure you know): >>> >>> xyplot(fr ~ as.numeric(names(fr)), type="h", >>> xlab="Determinant", ylab="Frequency") >>> >>> >>> 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 28, 2017 at 3:03 PM, Richard M. Heiberger <r...@temple.edu> wrote: >>>> ## This example is from R-intro.pdf page 21 (R-3.3.2) >>>> >>>> d <- outer(0:9, 0:9) >>>> fr <- table(outer(d, d, "-")) >>>> plot(as.numeric(names(fr)), fr, type="h", >>>> xlab="Determinant", ylab="Frequency") >>>> ## The y-axis tick marks are at c(-21,24,65). >>>> ## This seems to be because class(fr) == "table" >>>> >>>> ## Switching the class to array gives the more appropriate >>>> ## y-axis ticks at seq(0,500,100) . >>>> >>>> fr.array <- fr >>>> class(fr.array) <- "array" >>>> plot(as.numeric(names(fr)), fr.array, type="h", >>>> xlab="Determinant", ylab="Frequency") >>>> >>>> >>>> ## I have a question and a recommendation. >>>> ## Question: >>>> ## Why are the y-axis ticks for the table defaulted to c(-21,24,65). >>>> ## >>>> ## Recommendation: >>>> ## Changed the example on page 21 to show the ticks at seq(0,500,100)? >>>> >>>> ## Rich >>>> ______________________________________________ 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.