Dear list, I have been advised to share these with R-help instead of filling the bug report: 1) dotchart() does not allow to see the left axis title ('ylab') and cannot change the left margin (outer margin 2) of the plot The code: aa <- table(c(1, 1, 1, 2, 2, 3)) dotchart(aa, ylab="Ylab") # does not show 'ylab' old.par <- par(mar=c(1, 10, 1, 1)) ; dotchart(aa, ylab="Ylab") ; par(old.par) # does not change left margin Possible solution: I researched the problem and think that the dotchart() code will need few corrections. If there is an interest, I can post it here; or you can look at the code of shipunov::Dotchart1() function. 2) example(hist) includes two "wrong" and "extreme" examples which slow down and even crash R on some systems; this make it unsuitable for demonstration in the class and strikes beginners in R who just want to understand how hist() works. Actually, I did it last week (I was not aware of these examples), and in the class two computers hang, and many others were extremely slow. The code: example(hist) Possible solution: If R maintainers will enclose parts of "hist" example in \dontrun{}, this will allow to see the code but in the same time will not strike beginners in R who just want to understand how hist() works. They will still be possible to run with example(..., run.dontrun=TRUE). With best wishes, Alexey Shipunov
Try aa <- as.matrix(table(c(1, 1, 1, 2, 2, 3))) dotchart(aa, ylab="Ylab") It may wock On Sun, 16 Feb 2020 at 07:22, Alexey Shipunov <dactylorhiza at gmail.com> wrote:> Dear list, > > I have been advised to share these with R-help instead of filling the > bug report: > > 1) dotchart() does not allow to see the left axis title ('ylab') and > cannot change the left margin (outer margin 2) of the plot > > The code: > > aa <- table(c(1, 1, 1, 2, 2, 3)) > dotchart(aa, ylab="Ylab") # does not show 'ylab' > old.par <- par(mar=c(1, 10, 1, 1)) ; dotchart(aa, ylab="Ylab") ; > par(old.par) # does not change left margin > > Possible solution: > > I researched the problem and think that the dotchart() code will need > few corrections. If there is an interest, I can post it here; or you > can look at the code of shipunov::Dotchart1() function. > > 2) example(hist) includes two "wrong" and "extreme" examples which > slow down and even crash R on some systems; this make it unsuitable > for demonstration in the class and strikes beginners in R who just > want to understand how hist() works. Actually, I did it last week (I > was not aware of these examples), and in the class two computers hang, > and many others were extremely slow. > > The code: > > example(hist) > > Possible solution: > > If R maintainers will enclose parts of "hist" example in \dontrun{}, > this will allow to see the code but in the same time will not strike > beginners in R who just > want to understand how hist() works. They will still be possible to > run with example(..., run.dontrun=TRUE). > > With best wishes, > > Alexey Shipunov > > ______________________________________________ > R-help at 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. >-- John Kane Kingston ON Canada [[alternative HTML version deleted]]
Hello, I believe you are wrong, the error is not in dotchart, it's in your code. You assume that to plot an object of class "table" is the same as to plot an object of class "numeric". Inline. ?s 12:21 de 16/02/20, Alexey Shipunov escreveu:> Dear list, > > I have been advised to share these with R-help instead of filling the > bug report: > > 1) dotchart() does not allow to see the left axis title ('ylab') and > cannot change the left margin (outer margin 2) of the plot > > The code: > > aa <- table(c(1, 1, 1, 2, 2, 3)) > dotchart(aa, ylab="Ylab") # does not show 'ylab'You are right, it does *not* show 'ylab' but the user is warned. aa <- table(c(1, 1, 1, 2, 2, 3)) dotchart(aa, ylab = "Ylab") # does show 'ylab' #Warning message: #In dotchart(aa, ylab = "Ylab") : # 'x' is neither a vector nor a matrix: using as.numeric(x) My code: (mar <- par("mar")) # new R session #[1] 5.1 4.1 4.1 2.1 # the left margin is 4.1 aa <- as.numeric(table(c(1, 1, 1, 2, 2, 3))) dotchart(aa, ylab = "Ylab") # It does show 'ylab' old.par <- par(mar = mar + c(0, 5, 0, 0)) par("mar") #[1] 5.1 9.1 4.1 2.1 dotchart(aa, ylab = "Ylab") # The left margin is now 9.1, much bigger par(old.par) # It does change the left margin dotchart(aa, ylab = "Ylab") # but only when a new graph is plotted.> old.par <- par(mar=c(1, 10, 1, 1)) ; dotchart(aa, ylab="Ylab") ; > par(old.par) # does not change left margin > > Possible solution: > > I researched the problem and think that the dotchart() code will need > few corrections. If there is an interest, I can post it here; or you > can look at the code of shipunov::Dotchart1() function. > > 2) example(hist) includes two "wrong" and "extreme" examples which > slow down and even crash R on some systems; this make it unsuitable > for demonstration in the class and strikes beginners in R who just > want to understand how hist() works. Actually, I did it last week (I > was not aware of these examples), and in the class two computers hang, > and many others were extremely slow. > > The code: > > example(hist) > > Possible solution: > > If R maintainers will enclose parts of "hist" example in \dontrun{}, > this will allow to see the code but in the same time will not strike > beginners in R who just > want to understand how hist() works. They will still be possible to > run with example(..., run.dontrun=TRUE).Agree, it's annoying. Sometimes there's a Warning section after the Details section. Maybe such a section could get users' attention to those examples? At least it wouldn't hurt... Hope this helps, Rui Barradas> > With best wishes, > > Alexey Shipunov > > ______________________________________________ > R-help at 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. >
John and Rui, thanks! However, if we use the proper object, the problem still persists: dotchart(c("3"=1, "2"=2, "1"=3), ylab="Ylab") # ylab is invisible dotchart(c("aa"=1, "b"=2, "cc"=3), ylab="Ylab") # ylab is partly visible (!!!) dotchart(c("aaa"=1, "bbb"=2, "ccc"=3), ylab="Ylab") # ylab is well visible If the object is matrix, ylab is visible: dotchart(matrix(1:3, dimnames=list(c("aa","bb","cc"), NULL)), ylab="Ylab") But the ?dotchart explicitly says that "x: either a vector or matrix of numeric values" and then "labels: a vector of labels for each point. For vectors the default is to use ?names(x)? ...". So this is likely a bug. Do you agree? Alexey ??, 17 ????. 2020 ?. ? 01:55, Rui Barradas <ruipbarradas at sapo.pt>:> > Hello, > > I believe you are wrong, the error is not in dotchart, it's in your > code. You assume that to plot an object of class "table" is the same as > to plot an object of class "numeric". > > Inline. > > ?s 12:21 de 16/02/20, Alexey Shipunov escreveu: > > Dear list, > > > > I have been advised to share these with R-help instead of filling the > > bug report: > > > > 1) dotchart() does not allow to see the left axis title ('ylab') and > > cannot change the left margin (outer margin 2) of the plot > > > > The code: > > > > aa <- table(c(1, 1, 1, 2, 2, 3)) > > dotchart(aa, ylab="Ylab") # does not show 'ylab' > > You are right, it does *not* show 'ylab' but the user is warned. > > > aa <- table(c(1, 1, 1, 2, 2, 3)) > dotchart(aa, ylab = "Ylab") # does show 'ylab' > #Warning message: > #In dotchart(aa, ylab = "Ylab") : > # 'x' is neither a vector nor a matrix: using as.numeric(x) > > > My code: > > > (mar <- par("mar")) # new R session > #[1] 5.1 4.1 4.1 2.1 # the left margin is 4.1 > > aa <- as.numeric(table(c(1, 1, 1, 2, 2, 3))) > > dotchart(aa, ylab = "Ylab") # It does show 'ylab' > old.par <- par(mar = mar + c(0, 5, 0, 0)) > par("mar") > #[1] 5.1 9.1 4.1 2.1 > > dotchart(aa, ylab = "Ylab") # The left margin is now 9.1, much bigger > > par(old.par) # It does change the left margin > dotchart(aa, ylab = "Ylab") # but only when a new graph is plotted. > > > > > old.par <- par(mar=c(1, 10, 1, 1)) ; dotchart(aa, ylab="Ylab") ; > > par(old.par) # does not change left margin > > > > Possible solution: > > > > I researched the problem and think that the dotchart() code will need > > few corrections. If there is an interest, I can post it here; or you > > can look at the code of shipunov::Dotchart1() function. > > > > 2) example(hist) includes two "wrong" and "extreme" examples which > > slow down and even crash R on some systems; this make it unsuitable > > for demonstration in the class and strikes beginners in R who just > > want to understand how hist() works. Actually, I did it last week (I > > was not aware of these examples), and in the class two computers hang, > > and many others were extremely slow. > > > > The code: > > > > example(hist) > > > > Possible solution: > > > > If R maintainers will enclose parts of "hist" example in \dontrun{}, > > this will allow to see the code but in the same time will not strike > > beginners in R who just > > want to understand how hist() works. They will still be possible to > > run with example(..., run.dontrun=TRUE). > > Agree, it's annoying. Sometimes there's a Warning section after the > Details section. Maybe such a section could get users' attention to > those examples? At least it wouldn't hurt... > > > Hope this helps, > > Rui Barradas > > > > > With best wishes, > > > > Alexey Shipunov > > > > ______________________________________________ > > R-help at 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. > >