1

I'm trying to work from the surface example:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-1, 20, 0.25)
Y = np.arange(0, 5, 0.25)

X, Y = np.meshgrid(X, Y)


R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
        linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

I have the following bidimensional array:

[[29607.0], [23774.0, 52621.0], [71861.0], [9540.0, 12.9], []]

Each array correspond to a position in Y and each value a position in X with its corresponding value in Z. For example:

for Y= 0, I would have X=1 with Z=29607.0 for Y= 1, I would have X=1 with Z=23774.0 and X=2 with Z=52621.0

I've tried several things but all I get is errors.

1 Answer 1

1

I'm not sure this helps with whatever problems you are having but you could convert your values to a more normal format [[x1,y1,z1],[x2,y2,z2]... using something like this

arr = [[29607.0], [23774.0, 52621.0], [71861.0], [9540.0, 12.9]]
new_arr = []
for i, sub_arr in enumerate(arr):
  for j, z in enumerate(sub_arr):
    new_arr.append([i+1, j, z])

and get X,Y,Z as slices in axis=1 from the numpy version of that i.e.

new_arr = np.array(new_arr)
X = new_arr[:,0]

PS if arr was already an ndarray the you could do:

new_arr = np.array([[j+1, i, z] for (i, j), z in np.ndenumerate(arr)])
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.