# subticks in 2d plot

How would you control the subticks in a 2d plot?

var('x')
p=plot(5*sin(x/10)*sin(x),(x,0,20*pi))
p.show(ticks=[[0,5*pi,10*pi,15*pi,20*pi],5],tick_formatter="latex")


Gives the labelled ticks exactly where I would like them but I'd like to have unlabelled ticks at every pi value. In particular I'm looking at graphing +-5sin(x/10) and having some students fill in the plot of the more complicated function

edit retag close merge delete

Sort by » oldest newest most voted

I've implemented some control over minor-ticks in a branch of sage available here. Hopefully it (or some improved version of it) will get incorporated into the sage codebase at some point.

Here's an example which should achieve what was sought after by the questioner (except that minor ticks are smaller than major ticks, which may not have been desired) :

var('x')
p=plot(5*sin(x/10)*sin(x),(x,0,20*pi))
p.show(ticks=[[0,5*pi,10*pi,15*pi,20*pi],5], minor_ticks=pi,
tick_formatter="latex")


If the minor_ticks option is not specified, then minor-tick behavior will follow previous Sage defaults. If the option is specified, then the following examples describe the behavior:

minor_ticks=None, or =[None,None] -- no minor ticks will appear on either x or y axes
minor_ticks=3 -- minor ticks every 3 units on x axis ; Sage defaults on y axis
minor_ticks=[3,None] -- minor ticks every 3 units on x axis ; none on y axis
minor_ticks=[3,[2,7]] -- minor ticks every 3 units on x axis ; at 2 and 7 on y axis

more

This looks like it could be very helpful. I think there has already been some work on the refactoring in some graphics tickets, so the entire patch may not be needed in that way. We'll want to have a Trac ticket and so forth for discussing this - do you have a Sage Trac account? If not, you should get one and let's get working on this :)

( 2013-07-10 10:59:46 -0500 )edit

This is now http://trac.sagemath.org/ticket/14995 and a link to this code has been posted.

( 2013-08-02 05:56:34 -0500 )edit

Looking at the reference manual, it looks like we don't provide an interface to explicitly setting Matplotlib's minor ticks.

Certainly this is possible - see this example, where it is pretty clear what mpl code does what. We use the same method, but don't really customize. It probably would be nice to wrap.

more