[R] x tick labels - sparse?
jim holtman
jholtman at gmail.com
Sat Oct 21 05:17:17 CEST 2006
try this:
x <- seq(-100,1000,25)
y <- x * x
plot(x, y, xaxt = "n")
# plot only the 100th values
y <- x %% 100 == 0
axis(1, x[y], labels=x[y])
On 10/20/06, Darren Weber <darrenleeweber at gmail.com> wrote:
> OK, so that works. It reduces the number of tick marks and labels by
> reduction of the x array to elements that are multiples of 100. That
> is nice, but it's not what I really want.
>
> I do want tick marks at all elements of x, but only a sparse number of
> tick labels. I want to control what the tick labels are. I have
> trouble with this:
>
> x <- seq(-100,1000,25)
> y <- x * x
> plot(x, y, xaxt = "n")
> axis(1, x, labels = as.character( x[x %% 100 == 0] ) )
>
> Error in axis(side, at, labels, tick, line, pos, outer, font, vfont, lty, :
> 'at' and 'label' lengths differ, 45 != 12
>
> I've tried to match the label lengths using blanks and this will
> generate a plot with tick marks at all elements of x, but the x tick
> labels fail after plotting the first or second label. There is no
> error or warning. Try this and see if you can replicate the bug that
> I observe and advise me how to get around it:
>
> x <- seq(-100,1000,25)
> y <- x * x
> plot(x, y, xaxt = "n")
> xtickLabels <- as.character(x)
> for (i in 1:length(x) ){
> if ((i %% 2) == 0 ) xtickLabels[i] <- ' '
> } # BTW, could this syntax be more succint?
> axis(1, x, labels=xtickLabels)
>
>
> I see only the first tick label (-100) and nothing else.
>
> Thanks, Darren
>
>
>
>
>
> On 8/11/06, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> > Try this:
> >
> > x <- seq(-100,1000,25)
> > y <- x * x
> > plot(x, y, xaxt = "n")
> > axis(1, x[x %% 100 == 0])
> >
> >
> >
> > On 8/11/06, Darren Weber <darrenleeweber at gmail.com> wrote:
> > > Hi,
> > >
> > > I'm stuck on creating a plot with x tick labels for every Nth tick
> > > mark - how is that done? I don't see a simple solution to this in
> > > help(plot) or help(par) and what I've tried is not working, eg, the
> > > following does not work, although it seems intuitive to me that it
> > > should work:
> > >
> > > x <- seq(-100,1000,25)
> > > y <- x * x
> > > % find all the x values that are multiples of 100
> > > tmp <- x / 100
> > > tmp <- tmp %% 1
> > > tmp <- tmp > 0
> > > % set all other values to null strings
> > > xtickLabels <- as.character( x )
> > > xtickLabels[tmp] <- ""
> > > plot(x, y, xlab=xtickLabels)
> > >
> > >
> > > These commands look like this (the plot is not right):
> > >
> > > > x <- seq(-100,1000,25)
> > > > x
> > > [1] -100 -75 -50 -25 0 25 50 75 100 125 150 175 200 225 250
> > > [16] 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625
> > > [31] 650 675 700 725 750 775 800 825 850 875 900 925 950 975 1000
> > > >
> > > > tmp <- x / 100
> > > > tmp
> > > [1] -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75
> > > [13] 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75
> > > [25] 5.00 5.25 5.50 5.75 6.00 6.25 6.50 6.75 7.00 7.25 7.50 7.75
> > > [37] 8.00 8.25 8.50 8.75 9.00 9.25 9.50 9.75 10.00
> > > >
> > > > tmp <- tmp %% 1
> > > > tmp
> > > [1] 0.00 0.25 0.50 0.75 0.00 0.25 0.50 0.75 0.00 0.25 0.50 0.75 0.00 0.25 0.50
> > > [16] 0.75 0.00 0.25 0.50 0.75 0.00 0.25 0.50 0.75 0.00 0.25 0.50 0.75 0.00 0.25
> > > [31] 0.50 0.75 0.00 0.25 0.50 0.75 0.00 0.25 0.50 0.75 0.00 0.25 0.50 0.75 0.00
> > > >
> > > > tmp <- tmp > 0
> > > > tmp
> > > [1] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
> > > [13] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
> > > [25] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
> > > [37] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE
> > > >
> > > > xtickLabels <- as.character( x )
> > > > xtickLabels
> > > [1] "-100" "-75" "-50" "-25" "0" "25" "50" "75" "100" "125"
> > > [11] "150" "175" "200" "225" "250" "275" "300" "325" "350" "375"
> > > [21] "400" "425" "450" "475" "500" "525" "550" "575" "600" "625"
> > > [31] "650" "675" "700" "725" "750" "775" "800" "825" "850" "875"
> > > [41] "900" "925" "950" "975" "1000"
> > > >
> > > > xtickLabels[tmp] <- ""
> > > > xtickLabels
> > > [1] "-100" "" "" "" "0" "" "" "" "100" ""
> > > [11] "" "" "200" "" "" "" "300" "" "" ""
> > > [21] "400" "" "" "" "500" "" "" "" "600" ""
> > > [31] "" "" "700" "" "" "" "800" "" "" ""
> > > [41] "900" "" "" "" "1000"
> > > >
> > > > y <- x * x
> > > > y
> > > [1] 10000 5625 2500 625 0 625 2500 5625 10000
> > > [10] 15625 22500 30625 40000 50625 62500 75625 90000 105625
> > > [19] 122500 140625 160000 180625 202500 225625 250000 275625 302500
> > > [28] 330625 360000 390625 422500 455625 490000 525625 562500 600625
> > > [37] 640000 680625 722500 765625 810000 855625 902500 950625 1000000
> > > >
> > > > plot(x, y, xlab=xtickLabels)
> > > >
> > >
> > >
> > > Thanks in advance.
> > >
> > > Best, Darren
> > >
> > > ______________________________________________
> > > 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
> > > and provide commented, minimal, self-contained, reproducible code.
> > >
> >
>
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
More information about the R-help
mailing list