寻求解决“ValueError”的帮助

问题描述 投票:0回答:1
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 变量的数据。我正在寻找绘制一些像这样的奇特的情节enter image description here。 我收到错误“ValueError:‘数据’必须是形状为 (N, 3) 的 2D,但您的输入具有形状 (1, 13)”。

有人可以指导我吗?

python matplotlib plot 3d
1个回答
0
投票

您很可能想要一个带有 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 路径函数。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.