Hey everyone,

I'm looking into a 3D scatter plot - basically converting a NumPy array

to a 3D plot, where X and Y correspond to the X and Y co-ordinates on

the graph and the Z values corresponds to a particular height on the graph.

This is how I'm generating the lists:

x = list(range(0, 256))

y = list(range(0, 256))

z = []

for i in range(0, 255):

for j in range(0, 255):

z.append(ll[i][j])

where ll is my 2D array...

I've seen the scatter function with 3d projection, but this requires the

Z array length to be the same length as the X and Y lengths, whereas

I'll need to be plotting X*Y points (256*256). Is there some way that I

could achieve this?

Thanks,

Will.

```
x = np.arange(256)
y = np.arange(256)
xx, yy = np.meshgrid(x, y)
```

Then your `xx` and `yy` will be 2D, just like your `ll` variable. Then, you

pass the flattened versions of those three variables (i.e., `xx.flatten()`

or `xx.flat`) to the 3d scatter call.

I hope that helps!

Ben Root

## ···

On Mon, Oct 1, 2018 at 3:47 PM Will Furnell <mail at willfurnell.com> wrote:

Hey everyone,

I'm looking into a 3D scatter plot - basically converting a NumPy array

to a 3D plot, where X and Y correspond to the X and Y co-ordinates on

the graph and the Z values corresponds to a particular height on the graph.

This is how I'm generating the lists:

x = list(range(0, 256))

y = list(range(0, 256))

z =

for i in range(0, 255):

for j in range(0, 255):

z.append(ll[i][j])

where ll is my 2D array...

I've seen the scatter function with 3d projection, but this requires the

Z array length to be the same length as the X and Y lengths, whereas

I'll need to be plotting X*Y points (256*256). Is there some way that I

could achieve this?

Thanks,

Will.

_______________________________________________

Matplotlib-users mailing list

Matplotlib-users at python.org

Matplotlib-users Info Page

-------------- next part --------------

An HTML attachment was scrubbed...

URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20181001/33be122c/attachment.html>

Hello Ben,

Thank you very much, this works perfectly for me!

Best,

Will.

## ···

On 01/10/2018 21:10, Benjamin Root wrote:

```
x = np.arange(256)
y = np.arange(256)
xx, yy = np.meshgrid(x, y)
```

Then your `xx` and `yy` will be 2D, just like your `ll` variable. Then,

you pass the flattened versions of those three variables (i.e.,

`xx.flatten()` or `xx.flat`) to the 3d scatter call.

I hope that helps!

Ben Root

On Mon, Oct 1, 2018 at 3:47 PM Will Furnell <mail at willfurnell.com > <mailto:mail at willfurnell.com>> wrote:

Hey everyone,

I'm looking into a 3D scatter plot - basically converting a NumPy array

to a 3D plot, where X and Y correspond to the X and Y co-ordinates on

the graph and the Z values corresponds to a particular height on the

graph.

This is how I'm generating the lists:

x = list(range(0, 256))

y = list(range(0, 256))

z =

for i in range(0, 255):

? ? for j in range(0, 255):

? ? ? ? z.append(ll[i][j])

where ll is my 2D array...

I've seen the scatter function with 3d projection, but this requires the

Z array length to be the same length as the X and Y lengths, whereas

I'll need to be plotting X*Y points (256*256). Is there some way that I

could achieve this?

Thanks,

Will.

_______________________________________________

Matplotlib-users mailing list

Matplotlib-users at python.org <mailto:Matplotlib-users at python.org>

Matplotlib-users Info Page