>>>>> "FS" == Frederic Schutz <frederic.sch...@isb-sib.ch> >>>>> on Thu, 27 Aug 2009 13:25:16 +0200 (CEST) writes:
FS> I could not find a way to specify the border color of the boxes drawn in FS> a legend, so that the legend can match exactly the colors of the actual FS> plot (e.g. in the case of two superimposed histograms which have FS> different shading and different borders). FS> Indeed, the legend function seems to hard code the color "black" for the FS> borders in this call: FS> rect2(left = xt, top = yt + ybox/2, dx = xbox, dy = ybox, FS> col = fill, density = density, angle = angle, FS> border = "black") FS> I worked around this by adding a "border" argument to the function FS> (which defaults to "black"), and changing the call above. It works for FS> me; I have looked quickly at the rest of the function to see if there FS> would be a side effect and did not see any (but I haven't checked FS> carefully). FS> This could be a useful improvement of the legend() function; in case the FS> change described above looks usable, I attach two simple diff files (for FS> the function itself and the manual page). FS> Cheers, FS> Frédéric Thank you, Frédéric, indeed, the changes are so minimal that I will apply the two patches and they should be in "R-devel" (for R 2.10.0) soon. Best regards, Martin Maechler, ETH Zurich FS> --------------040007030503070307040509 FS> Content-Type: text/x-patch; FS> name="legend.R.diff" FS> Content-Transfer-Encoding: 7bit FS> Content-Disposition: inline; FS> filename="legend.R.diff" FS> --- legend.R~ 2009-03-20 00:05:18.000000000 +0100 FS> +++ legend.R 2009-08-27 11:52:02.000000000 +0200 FS> @@ -15,8 +15,8 @@ FS> # http://www.r-project.org/Licenses/ FS> legend <- FS> -function(x, y = NULL, legend, fill=NULL, col = par("col"), lty, lwd, pch, FS> - angle = 45, density = NULL, bty = "o", bg = par("bg"), FS> +function(x, y = NULL, legend, fill=NULL, col = par("col"), border="black", FS> + lty, lwd, pch, angle = 45, density = NULL, bty = "o", bg = par("bg"), FS> box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"), FS> pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd, FS> xjust = 0, yjust = 1, x.intersp = 1, y.intersp = 1, adj = c(0, 0.5), FS> @@ -217,7 +217,7 @@ FS> fill <- rep(fill, length.out = n.leg) FS> rect2(left = xt, top=yt+ybox/2, dx = xbox, dy = ybox, FS> col = fill, FS> - density = density, angle = angle, border = "black") FS> + density = density, angle = angle, border = border) FS> } FS> xt <- xt + dx.fill FS> } FS> --------------040007030503070307040509 FS> Content-Type: text/x-patch; FS> name="legend.Rd.diff" FS> Content-Transfer-Encoding: 7bit FS> Content-Disposition: inline; FS> filename="legend.Rd.diff" FS> --- legend.Rd~ 2009-03-20 00:05:18.000000000 +0100 FS> +++ legend.Rd 2009-08-27 11:57:28.000000000 +0200 FS> @@ -8,7 +8,7 @@ FS> \title{Add Legends to Plots} FS> \usage{ FS> legend(x, y = NULL, legend, fill = NULL, col = par("col"), FS> - lty, lwd, pch, FS> + border="black", lty, lwd, pch, FS> angle = 45, density = NULL, bty = "o", bg = par("bg"), FS> box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"), FS> pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd, FS> @@ -34,6 +34,8 @@ FS> with the specified colors (or shaded in the specified colors) FS> to appear beside the legend text.} FS> \item{col}{the color of points or lines appearing in the legend.} FS> + \item{border}{the border color for the boxes (used only if FS> + \code{fill} is specified).} FS> \item{lty, lwd}{the line types and widths for lines appearing in the FS> legend. One of these two \emph{must} be specified for line drawing.} FS> \item{pch}{the plotting symbols appearing in the legend, either as FS> --------------040007030503070307040509-- FS> ______________________________________________ FS> R-devel@r-project.org mailing list FS> https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel