That can be done in Sage in a variety of ways . Here’s one :

var("x, y")
L = 3# Plotted function
f =lambda x,y:cos(x)-2*y# Coloring# Colormap
cm=colormaps["RdBu"]# We have to scale the colormap :# Range of values : 
possible shortcut via some analytical obviousnesses :# cmin = f(-3, 3).n()# 
cmax = f(0, -3)# Being dum and computing on grid :
foo = [u for u in (-3,-2.97..3)]
Mesh = [[f(u, v) for v in foo] for u in foo]
cmin = min(flatten(Mesh))
cmax = max(flatten(Mesh)
crange = cmax-cmin
cf = lambda x, y: f(x, y)/crange# Plot
parametric_plot3d(lambda x, y, z:[x, y, f(x, y)], (-3, 3), (-3, 3),
                  color=(cf, cm), aspect_ratio=[2, 2, 1])

It turns out that plot3d(f, (-3, 3), (-3, 3), color=(cf, cm), 
aspect_ratio=[2, 2, 1]) *also* works, but the color= parameter is not 
documented as such for plot3d, only for parametric_plot3d.

You may also try to play with list_plot3d, which I do not use as often. 
Lazy me…

HTH,
​
Le mercredi 19 octobre 2022 à 11:18:37 UTC+2, gauri...@gmail.com a écrit :

> I want to create heat maps of a scalar field in SAGE. Here is equivalent 
> code in Matplotlib that does the job along with the resulting output. The 
> matplotlib code uses the .pcolormesh function. Is there an equivalent in 
> SAGE? 
>
> The closest I can see are the functions that create contour plots as 
> given here 
> <https://doc.sagemath.org/html/en/reference/plotting/sage/plot/contour_plot.html>,
>  
> but I don’t want the discrete bands that are created in those plots; for 
> contour plots that is of course natural because you want to see the shapes 
> of the individual level curves. 
>
> However, I specifically want the continuous smearing as outputted by the 
> Matplotlib code below, which gives a “heat-map” of the 2D scalar function.
>
> import numpy as np
> import matplotlib.pyplot as plt
> import matplotlib.cm as cm 
>
> fig,ax = plt.subplots()
> L = 3
> x    = np.linspace(-L, L, 100) 
> y    = np.linspace(-L, L, 100) 
> X, Y = np.meshgrid(x, y)
> Z    = np.cos(X) - 2*Y 
>
> z_min, z_max = -np.abs(Z).max(), np.abs(Z).max()
> c= ax.pcolormesh(X, Y, Z, cmap='RdBu', vmin=z_min, vmax=z_max) 
> fig.colorbar(c, ax=ax)
>
> ax.set_aspect(1.0)
> ax.set_title("Heat map of scalar field",fontsize=20)
> fig.set_size_inches((10,10))
> plt.show()
>
>
>
> Thanks!
>
> Gaurish
> ​
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-support/e137f7cc-20f2-4be2-ad78-abf616a193c4n%40googlegroups.com.

Reply via email to