import numpy as np
from matplotlib import pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
X = np.empty([10,150])
Y = np.empty([10,150])
Z = np.empty([10,150])
plt.style.use('seaborn-v0_8-poster')
fig = plt.figure(figsize=(12, 12))
ax = plt.axes(projection='3d')
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
ax.set_xlabel('X Label', fontsize=14, fontweight='bold', labelpad=20)
ax.set_ylabel('Y Label', fontsize=14, fontweight='bold', labelpad=20)
ax.set_zlabel('Z Label', fontsize=14, fontweight='bold', labelpad=20)
colors = ['blue', 'cyan', 'turquoise', 'green', 'yellow', 'orange', 'red', 'crimson', 'magenta', 'purple', 'violet']
cmap = LinearSegmentedColormap.from_list('my_colormap', list(zip([np.linspace(0, 1, 11)], colors)))
plt.imshow([Z], cmap=cmap, vmin=0, vmax=1, interpolation='nearest')
plt.colorbar()
plt.show()
ValueError:“数据”必须是形状为 (N, 3) 的 2D,但您的输入具有形状 (1, 13)
我有 X、Y、Z 变量的数据。我正在寻找绘制一些像这样的奇特的情节。 我收到错误“ValueError:‘数据’必须是形状为 (N, 3) 的 2D,但您的输入具有形状 (1, 13)”。
有人可以指导我吗?
您很可能想要一个带有 jet
色彩图的
plot_surface
:
import numpy as np
import matplotlib.pyplot as plt
def ackley(x, y):
"""http://www.geatbx.com/ver_3_3/fcnfun10.html"""
a, b, c, n = 20, 0.2, 2 * np.pi, 2
return (
-a * np.exp(-b * np.sqrt(x**2 + y**2 / n))
+ -np.exp(np.cos(c * x) + np.cos(c * y) / n)
+ a + np.exp(1)
)
data = np.linspace(-2, 2, 100)
X, Y = np.meshgrid(data, data)
fig, ax = plt.subplots(subplot_kw={"projection": "3d"}, figsize=(10, 10))
surf = ax.plot_surface(X, Y, ackley(X, Y), cmap="jet")
fig.colorbar(surf, shrink=0.5, aspect=10)
ax.view_init(17, -52, 0)
plt.show()
NB:为了实现有意义的可视化,我使用改编自here的 Ackley 路径函数。