Contour Plots and Points

Why can I not have a single point on a contour plot?

var('x,y')

f(x,y)=sin(x)*cos(y)

G = contour_plot(f(x,y),(x,-3,3),(y,-3,3),contours=20,plot_points=100)

G += point((1,1), size=100)

G.show()


does not display the point. I can add a line (for example)

G += line(((1.5,1),(1.5,0)))


and that line shows up but not the point.

Thanks.

JT

edit retag close merge delete

Sort by ยป oldest newest most voted

The point is there -- it's simply lurking behind the contour plot. Or, in matplotlib jargon (one of the plotting packages Sage uses is called matplotlib), it doesn't have a higher zorder. The zorder is the layer level, where the layers are drawn from lower to higher.

I can never remember what zorders different things default to, but it's usually easily changed manually:

var('x,y')
f(x,y)=sin(x)*cos(y)
G = contour_plot(f(x,y),(x,-3,3),(y,-3,3),contours=20,plot_points=100)
G += point((1,1), size=100,zorder=2)
G.show()


produces

more

Thanks.

Just to be certain, why does subsequently plotting a line without a zorder not put that line behind the contour plot as well?

more

Unfortunately I don't understand the order in which things are drawn well enough to say what the order is when zorders aren't specified/things have the same zorder. Note that you can use the ".set_zorder" method on graphics objects to change it after-the-fact.

( 2012-01-16 11:13:11 +0100 )edit
1

it seems to make sense to have contour plots below other things generally. It would be great if someone came up with a comprehensive sensible default zorder for all of the graphics objects.

( 2012-01-16 17:16:57 +0100 )edit

Agreed. But who will take the responsibility for user complaints that that zorder setup is wrong?

( 2012-01-17 11:19:22 +0100 )edit

the same person that does now...the user who wants to submit a patch.

( 2012-04-12 16:26:27 +0100 )edit