[R] how to control ticks in plots with yasp or xasp

Denis Chabot chabotd at globetrotter.net
Sat Oct 8 18:17:50 CEST 2005


Hi, sorry about the bad syntax, though the right syntax would not  
have worked either, according to your tests (Mark, Brian, Peter).

Anyway it is too finicky, I will draw them myself. For instance,

plot(1:100, xaxt="n")
par(xaxp=c(0, 100, 10))  # the value is reset at each plot
axis(1)

Placed tick marks at intervals at 0, 10, ..., 100, as expected, but  
did not place a label under 100...

Thanks for the answers, usufull as always,

Denis


Le 05-10-08 à 11:58, Marc Schwartz a écrit :

> On Sat, 2005-10-08 at 16:37 +0100, Prof Brian Ripley wrote:
>
>> On Sat, 8 Oct 2005, Marc Schwartz wrote:
>>
>>
>>> On Sat, 2005-10-08 at 09:28 -0400, Denis Chabot wrote:
>>>
>>>> Hi,
>>>>
>>>> A few times I tried to control the number and position of tick  
>>>> marks
>>>> in plots with the yasp or xasp parameters. For example, a y axis  
>>>> was
>>>> drawn by default with tick marks at 0, 20, 40, 80 and 100. I  
>>>> tried to
>>>> get tick marks every 10 by adding
>>>>
>>>> yasp=(0, 100, 10)
>>>>
>>>> but this had no effect at all. I know I can draw the axis and tick
>>>> marks manually, but often this simple option would suffice if I  
>>>> could
>>>> understand how to make it work.
>>>>
>>>> Thanks in advance,
>>>>
>>>> Denis Chabot
>>>>
>>>
>>>
>>> I suspect that one problem you are having is that there is no
>>> par("xasp") or par("yasp")....unless these are typos and you are  
>>> trying
>>> to use par("xaxp") and par("yaxp")?
>>>
>>
>> In any case, (0, 100, 10) is invalid syntax, and c(0, 100, 10) is  
>> needed.
>>
>
> Indeed.
>
>
>>> There is an 'asp' argument to some of the plot functions (ie.
>>> plot.default), but this has a different intention.
>>>
>>> par("xaxp") and par("yaxp") are not listed as read only pars in ? 
>>> par,
>>> however, I cannot recall an instance where R does not overwrite  
>>> the user
>>> settings during the calculation of the axes, whether passed as  
>>> arguments
>>> to a plot function or set a priori via a par() call.
>>>
>>
>> Really?  Try
>>
>>
>>> plot(1:100, xaxt="n")
>>> par(xaxp=c(0, 50, 5))  # the value is reset at each plot
>>> axis(1)
>>>
>>
>> for how it works (but not inline, which is probably a bug).
>>
>
> Ah....I had not thought about that 'par'ticular combination...  ;-)
>
> Hence, not R.O.  So it must be used _after_ a plot call, which makes
> sense.
>
> I had reached for my copy of Paul's book and on page 96 (last  
> paragraph
> in section 3.4.5 on Axes), he suggests using the approach I elucidate
> below with axTicks(). I thought he might have some other ideas and  
> that
> I was missing something. This is also referenced on page 70, third
> paragraph in section 3.2.5 on Axes.
>
>
>>> If you want explicit control over the tick marks, you will need  
>>> to use
>>> axis(), perhaps in combination with axTicks(), after using 'xaxt  
>>> = "n"'
>>> and/or 'yaxt = "n"' in the plot call, depending upon the  
>>> circumstances.
>>>
>>
>> That is usually as easy.
>>
>
> Agreed.
>
> Thanks,
>
> Marc
>
>
>




More information about the R-help mailing list