【发布时间】:2020-04-19 23:28:01
【问题描述】:
我正在使用 X=lat、Y=long 和 Z=depth(Elevation)with csv 绘制 3D 曲面图。我很确定所有变量的长度都相同 43 但我收到以下错误,程序指的是什么值?
ValueError: shape mismatch: objects cannot be broadcast to a single shape.
这是我的 python sn-p。
import matplotlib.pyplot as plt
%matplotlib inline
import plotly.graph_objects as go
import pandas as pd
import numpy as np
# Read data from a csv
z_data = pd.read_csv('bathy_bedford.csv')
z = z_data.values
sh_0, sh_1 = z.shape
x, y = np.linspace(44.66875, 44.74791667, sh_0), np.linspace(-63.69791667, -63.52708333, sh_0)
#plotting
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(1,1,1, projection='3d')
ax.plot_surface(x, y, z, rstride=4, cstride=4, alpha=0.25)
cset = ax.contour(x, y, z, zdir='z', offset=-np.pi, cmap=matplotlib.cm.coolwarm)
cset = ax.contour(x, y, z, zdir='x', offset=-np.pi, cmap=matplotlib.cm.coolwarm)
cset = ax.contour(x, y, z, zdir='y', offset=3*np.pi, cmap=matplotlib.cm.coolwarm)
ax.set_xlim3d(-np.pi, 2*np.pi);
ax.set_ylim3d(0, 3*np.pi);
ax.set_zlim3d(-np.pi, 2*np.pi);
这里是变量长度的输出:
len(x)
43
len(y)
43
len(z)
43
【问题讨论】:
-
我认为您需要将 y 更改为大小
sh_1。目前是sh_0。 -
然后将变量大小从 43 更改为 21,问题仍然存在。
-
好的。问题是你没有正确的形状。打印出形状,然后也许我们可以弄清楚。例如,也许您需要 x 为
sh_1而 y 为sh_0。 -
z是您的问题。它的形状是 (43, 21),而x和y的形状是 (43,)。
标签: python pandas matplotlib multidimensional-array