# Density plot aspect ratio

I am trying to make a very high aspect ratio density plot, but I can't seem to manually adjust the aspect ratio, and the automatically generated plot ends up being just a very pretty line. What am I doing wrong? The code I'm using is below. I don't know how to use Markdown to make it look pretty, sorry :(

print("Diffusion length data")
k = 1.381E-023
T = 300
q = 1.602E-019
var('ue')
De(ue) = ue*k*T/q
var('tau')
Le = (tau*10^-9*De)^(1/2)
D = density_plot(Le*10^4, (tau, 0, 3), (ue, 0, 500), cmap="jet")
D.show(aspect_ratio=0.05)

edit retag close merge delete

Sort by » oldest newest most voted

Thanks for reporting. It is a bug in Sage. Opened ticket 15314 to track this.

Update: Proposed fix is in ticket 15315.

Edit by kcrisman - here is what aspect_ratio=0.01 looks like with the proposed fix.

more

This is fantastic! I need to add a contour plot, some data points, and axes labels so I have more work to do. I tried to apply the patch according to the directions in the "Reviewing a patch" section of the developer walkthrough, but got an error that says 'abort: failed to synchronize metadata for "sage/plot/graphics.py"'. Is there another way to apply this patch? Can I edit the source myself without large risk of ruining my sage install? As an end-user this is both a little terrifying and awesome to me at the same time.)

( 2013-10-21 20:17:59 -0500 )edit

You can try the following to patch it manually and rebuild sage. I will assume that SAGE_ROOT is the directory where your sage is installed, i.e., to run sage you need to actually run SAGE_ROOT/sage. $cd SAGE_ROOT/devel/sage$ patch -p1 --dry-run -i /path/to/trac_15315-density_and_matrix_plot_aspect_ratio.patch $patch -p1 -i /path/to/trac_15315-density_and_matrix_plot_aspect_ratio.patch # If above had no errors$ ../../sage -b # rebuild sage

( 2013-10-21 21:21:58 -0500 )edit

That worked perfectly, thanks ppurka! Also thanks kcrisman, you guys responded very quickly.

( 2013-10-22 13:16:50 -0500 )edit

This is a bug in how we pass aspect ratio in to plots using matplotlib's imshow command, and thank you for finding it; the typical use cases have been square inputs! I've opened Trac 15315 for this. I tried to look for a few workarounds, but the things I tried for accessing the aspect ratio of the underlying mpl figure wouldn't propagate (for the cognoscenti, even doing savefig now doesn't work in Sage).

more