If I use the following command to plot points: plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label", xaxt="n") there is a large amount of space between the label "X Label" and the actual x-axis. If I change the xaxt="n" to xaxt="s", the label "X Label" don't move at all. Is there a way to get the label "X Label" closer to the x-axis when xaxt="n"? The plot I am generating is going to be included in a paper I am writing. I can cause the plot to be saved in a PDF file by doing the following: pdf("foo.pdf", width=5.5, height=4.25, onefile=FALSE) plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label", xaxt="n") dev.off(); In the resulting file, there is a lot of whitespace around the graph, particularly between the top line of the plot area and the top of the page. Since I am including these plots in a paper, I want them to be as large as possible and not take up any extra space. Is there a way to get R to draw a plot that goes all the way to the margins of the print area? Jamie
Jamieson Cobleigh wrote:> If I use the following command to plot points: > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label", xaxt="n") > > there is a large amount of space between the label "X Label" and the > actual x-axis. If I change the xaxt="n" to xaxt="s", the label "X > Label" don't move at all. Is there a way to get the label "X Label" > closer to the x-axis when xaxt="n"? > > > > The plot I am generating is going to be included in a paper I am > writing. I can cause the plot to be saved in a PDF file by doing the > following: > > pdf("foo.pdf", width=5.5, height=4.25, onefile=FALSE) > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label", xaxt="n") > > dev.off(); > > In the resulting file, there is a lot of whitespace around the graph, > particularly between the top line of the plot area and the top of the > page. Since I am including these plots in a paper, I want them to be > as large as possible and not take up any extra space. Is there a way > to get R to draw a plot that goes all the way to the margins of the > print area? > > JamieFor the size of margins see ?par and its argument "mar", for the position of the x-axis label, add it in a separate call to title() and specify the "line" where to add the text as in: par(mar = c(1, 4, 0, 0) + 0.1) plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="", xaxt="n") title(xlab="X Label", line=0) Uwe Ligges> ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
This technote explains the margin area (mar) and how to modify it to control white space around a graphic: http://research.stowers-institute.org/efg/R/Graphics/Basics/mar-oma/index.htm When you have multiple figures on a graphic, you may also want to learn to control the outer margin area (oma), which is also explained. AFAIK, the only way to get the axis label "closer" to the axis is to suppress the actual axis labels and use the mtext command to display alternative text where you want it. For example, look at the blue text in Figure 2B (at the above link) that is between the axis label and the axis. This blue text is at line=2, when the axis labels are at line=3. efg Bioinformatics Stowers Institute "Jamieson Cobleigh" <cobleigh at gmail.com> wrote in message news:7f50836c050901060555b9289d at mail.gmail.com...> If I use the following command to plot points: > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label",xaxt="n")> > there is a large amount of space between the label "X Label" and the > actual x-axis. If I change the xaxt="n" to xaxt="s", the label "X > Label" don't move at all. Is there a way to get the label "X Label" > closer to the x-axis when xaxt="n"? > > The plot I am generating is going to be included in a paper I am > writing. I can cause the plot to be saved in a PDF file by doing the > following: > > pdf("foo.pdf", width=5.5, height=4.25, onefile=FALSE) > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label",xaxt="n")> > dev.off(); > > In the resulting file, there is a lot of whitespace around the graph, > particularly between the top line of the plot area and the top of the > page. Since I am including these plots in a paper, I want them to be > as large as possible and not take up any extra space. Is there a way > to get R to draw a plot that goes all the way to the margins of the > print area?
That worked and gave me enough information so to make it look exactly the way I want. Thanks! Jamie On 9/1/05, Chuck Cleland <ccleland at optonline.net> wrote:> How about this: > > par(mar=c(2,4,1,1)) > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="", xaxt="n") > > mtext(side=1, line=0.5, "X Label") > > hope it helps, > > Chuck > > Jamieson Cobleigh wrote: > > If I use the following command to plot points: > > > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label", xaxt="n") > > > > there is a large amount of space between the label "X Label" and the > > actual x-axis. If I change the xaxt="n" to xaxt="s", the label "X > > Label" don't move at all. Is there a way to get the label "X Label" > > closer to the x-axis when xaxt="n"? > > > > > > > > The plot I am generating is going to be included in a paper I am > > writing. I can cause the plot to be saved in a PDF file by doing the > > following: > > > > pdf("foo.pdf", width=5.5, height=4.25, onefile=FALSE) > > > > plot(c(1,2,2,3,3,3), type="p", pch=20, ylab="Y Label", xlab="X Label", xaxt="n") > > > > dev.off(); > > > > In the resulting file, there is a lot of whitespace around the graph, > > particularly between the top line of the plot area and the top of the > > page. Since I am including these plots in a paper, I want them to be > > as large as possible and not take up any extra space. Is there a way > > to get R to draw a plot that goes all the way to the margins of the > > print area? > > > > Jamie > > > > ______________________________________________ > > R-help at stat.math.ethz.ch mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > > > > > -- > Chuck Cleland, Ph.D. > NDRI, Inc. > 71 West 23rd Street, 8th floor > New York, NY 10010 > tel: (212) 845-4495 (Tu, Th) > tel: (732) 452-1424 (M, W, F) > fax: (917) 438-0894 > >
You can do this with the 'mgp' argument to par() (see ?par). For example, I find par(mgp=c(2, 0.75, 0)) (which puts the axis label on line 2 and the axis values on line 0.75) nicely "tightens up" the space around a plot. Rich Raubertas> -----Original Message----- > From: r-help-bounces at stat.math.ethz.ch > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Earl F. Glynn > Sent: Thursday, September 01, 2005 11:14 AM > To: r-help at stat.math.ethz.ch > Subject: Re: [R] Spacing and margins in plot > > > "Chris Wallace" <c.wallace at qmul.ac.uk> wrote in message > news:m3wtm0502o.fsf at qmul.ac.uk... > > > how about > > plot(..., xlab="") > > title(xlab="label text", line=2) > > Yes, Chris, I like your idea, especially when I can "fix" > both X and Y axes > at the same time: > > plot(0, xlab="",ylab="") > title(xlab="X axis", ylab="Y axis", line=2) > > I'd prefer a way to set the axis title line at the same time > I change the > mar parameters, but it's not a big deal. > > Thanks. > efg > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > >