I know the best way is trying function Z = f(X, Y) and then using X,Y,Z,but my actual data is stored in a list,here I just give a simple example.
I want take i, j and test_list as X,Y,Z coordinate:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
test_list = []
for i in np.arange(1, 21):
for j in range(1, 11):
test_list.append(i * j)
so at first the shape of test_list is (200,) and then I reshape it as (20,10) and using meshgrid:
i = np.array(np.arange(1, 21))
j = np.array(np.arange(1, 11))
X, Y = np.meshgrid(i, j)
Z1 = np.reshape(test_list, (20, 10))
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z1, rstride=1, cstride=1,
cmap='viridis', edgecolor='none')
plt.show()
However it shows error:
shape mismatch: objects cannot be broadcast to a single shape
How to solve it, I guess there is no problem...