I am using x,z
as shown below in heatmap() input. I am getting error Makie.convert_arguments
for the plot type MakieCore.Heatmap and its conversion trait MakieCore.CellGrid() was unsuccessful.
My code is
begin
fig=Figure()
ax=Axis(fig[1,1]; xscale=log10, xlabel = "X", ylabel = "Z")
hm = heatmap!(ax,x,z, rho[1,:,:].*v_p[1,:,:]; colormap=:jet, interpolate=true)
Colorbar(fig[1, 2], hm; label = "values")
colsize!(fig.layout, 1, Aspect(1, 1.0))
colgap!(fig.layout, 7)
contourf!(psi[1,:,:], levels = 0.3:0.1:1, mode = :relative)
contourf!(alfsurf[1,:,:], levels = 0.3:0.1:1, mode = :relative)
fig
end
How can i use Plot Recipes · Makie ? How to overcome this error?
Heatmap does not accept x and y coordinates as grids - only vectors. Use surface
instead!
I have to change coordinates from Spherical to Cartesian system. I want to use vectors x
and y
.
X and Y are matrices here, no?
Yes, X and Y are matrices here. But Python heatmap() function works fine on that matrix. I am converting Python script to Julia. I also have to add contours in plot.
@rafael.guerra
@joa-quim
Makie has a different definition of heatmaps than python. Is there a particular issue with surface
?
My Python heatmap looks like as shown in Plotting Heatmap with many attributes
Python heatmap() function is taking input of x
and y
as matrices. How can i get such heatmap in Julia? In Julia heatmap() function don’t accept x
qnd y
input as matrices.
Well, you pinged me, so in order that I may help you must start trying to do that image with GMT. Start by converting your data array into GMTgrid (make it Float32), use grdimage
, overlay, grdcontour
layers.
Yes, Now i have added GMT.jl. How can i get Python plot like in Plotting Heatmap with many attributes ?
See What i have done so far
@rafael.guerra
@joa-quim
Still don’t understand what you are trying to achieve. To reproduce exactly that other figure? Make one alike but using your own data?
Anyway, in the mat2grid
step you should also include the x=...
and y=...
options with the data coordinate vectors. Than the figure is made with a base grdimage
call, followed with a grdcontour
and a quiver layers. And a plot
layer too (I think) to add the dashed lines.
x
and y
are matrices and not vector. I want to get plot like
and then add quivers etc.
@asinghvi17
@jules
If they are matrices and your grid is regular that’s the (meshgrid) awful waste. A vector of x
and y
is all it needs. Extract them from the x,y
matrices. But I see that your contour plot already has coordinates, so you must have set them already.
Again, start with an image made with grdimage
and add the other layers.
How to extract those vectors from x
and y
matrices? I don’t know which part of matrix contains those vectors. You can see my matrix
I’m afraid there some misunderstandings here and I know nothing about your grid. I am assuming that whatever is represented in your matrix it has coordinates, right? Then pass those x,y
coordinates as vectors to the mat2grid
function. If no coordinates in mat2grid
it will create default ones based on the nrows, ncols of the matrix.
Please see matrix above. In python pcolormesh() function is working fine on that matrix. Is there any alternative way to get that pcolormeshin Julia?
OK, you have no coordinates.
Why don’t you try what I’ve been telling you? Start with grdimage(......)
I have two matrices x
and y
. SORRY for mistake , I need alternative of pcolormesh()
of Python and not heatmap().
Then make the image with one of those layers.
GMT has a pcolor but don’t think it will be better than making an image with grdimage
.
1 Like