I’m trying to plot 3D Quiver plot with Julia Plots package, it appears that Plots still does not support 3D Quiver. so I’m trying to see if there are any other packages such as PyPlot that has the facility to plot 3D Quiver.

using PyCall, PyPlot
using Plots, DataFrames

df = DataFrame()
df.x = [-5 ,-4.552786405 ,-4.105572809 ,-3.211145618 ,-1.422291236 ,0]
df.y = [10 ,9.105572809 ,8.211145618 ,6.422291236 ,2.844582472 ,0]
df.z = [125 ,103.6393202 ,84.27864045 ,51.5572809 ,10.1145618 ,0]
df.u = [0.447213595 ,0.447213595 ,0.894427191 ,1.788854382 ,1.422291236 ,0]
df.v = [-0.894427191 ,-0.894427191 ,-1.788854382 ,-3.577708764 ,-2.844582472 ,0]
df.w = [-21.36067977 ,-19.36067977 ,-32.72135955 ,-41.4427191 ,-10.1145618 ,0]

Here is the output with `GNUPLOT`

:

I’m unable to reproduce this in `Julia`

. When I tried using the following code using `PyPlot`

. I got strange output. Is there any way to create 3D plot in `Julia`

without using `PyPlot`

?

pygui(true)

fig = figure()
ax = fig.gca(projection=“3d”)
ax.quiver(df[!,1],df[!,2],df[!,3],df[!,4],df[!,5],df[!,6])

.

Since I’m unable to post two images because of I’m a new user. Reposting:

I also need to animate this data as shown below. Can you please let me know how can this be achieved in `Julia`

?

Thanks

Makie.jl is the best option for this kind of thing.

1 Like

Thanks, I had difficulty installing Make.jl in first place, exactly the same issue reported here after many hours of struggle I finally installed it.

Unfortunately, the 3D plots and also even regular surface plots did not scale well and did not have proper aspect ratio. Very low quality.

I ended using `Plots`

and `marker =:rtriangle`

that provided work around to create 3D quiver plot. It worked perfectly.

Thanks so much

mbaz
August 17, 2020, 2:45am
#5
Using Gaston:

```
using Gaston
x = [-5 ,-4.552786405 ,-4.105572809 ,-3.211145618 ,-1.422291236 ,0]
y = [10 ,9.105572809 ,8.211145618 ,6.422291236 ,2.844582472 ,0]
z = [125 ,103.6393202 ,84.27864045 ,51.5572809 ,10.1145618 ,0]
dx = [0.447213595 ,0.447213595 ,0.894427191 ,1.788854382 ,1.422291236 ,0]
dy = [-0.894427191 ,-0.894427191 ,-1.788854382 ,-3.577708764 ,-2.844582472 ,0]
dz = [-21.36067977 ,-19.36067977 ,-32.72135955 ,-41.4427191 ,-10.1145618 ,0]
surf(x, y, z, supp = [dx dy dz], w = "vectors filled head", lw = 2,
Axes(xlabel = :x, ylabel = :y, zlabel = :z, view = (55, 62)))
```

produces:

The animation is easy to obtain with the techniques shown here – don’t hesitate to ask if you need help with it.

4 Likes

Similar to @mbaz solution with Gnuplot the solution is similar…

```
using Gnuplot
x = [-5 ,-4.552786405 ,-4.105572809 ,-3.211145618 ,-1.422291236 ,0]
y = [10 ,9.105572809 ,8.211145618 ,6.422291236 ,2.844582472 ,0]
z = [125 ,103.6393202 ,84.27864045 ,51.5572809 ,10.1145618 ,0]
dx = [0.447213595 ,0.447213595 ,0.894427191 ,1.788854382 ,1.422291236 ,0]
dy = [-0.894427191 ,-0.894427191 ,-1.788854382 ,-3.577708764 ,-2.844582472 ,0]
dz = [-21.36067977 ,-19.36067977 ,-32.72135955 ,-41.4427191 ,-10.1145618 ,0]
@gsp xlab = "x" ylab = "y" zlab = "z" :-
@gsp :- x y z dx dy dz "w vectors filled head lw 1.2 lc 'black' not"
```

this also works in 2D

```
@gp xlab = "x" ylab = "y" :-
@gp :- x y dx dy "w vectors filled head lw 1.2 lc 'black' not"
```

2 Likes