【发布时间】:2020-11-15 20:55:40
【问题描述】:
我正在做一个项目,其中我有来自传感器读数的 x_mean、y_mean、z_mean。我的任务是使用平均值作为绘图的 z 轴。在等高线图中,我需要该图的 z 轴值来表示 X 和 Y 坐标处的平均值。所以基本上我会有3个不同的情节。
我只有 x_mean、y_mean、z_mean。那么如何为每个人制作等高线图呢?
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(6,5))
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
ax = fig.add_axes([left, bottom, width, height])
start, stop = 0, 5
x_vals = np.linspace(start, stop)
y_vals = np.linspace(start, stop)
X, Y = np.meshgrid(x_vals, y_vals)
print(X)
print(X.shape)
x_mean = -19.44287213
Z = x_mean
print(Z)
print(Z.shape)
cp = plt.contourf(X, Y, Z, 80)
plt.colorbar(cp)
ax.set_title('Contour Plot')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()
【问题讨论】:
-
Z必须是一个与 X 和 Y 形状相同的 numpy 数组。所以,你可以试试Z=np.full_like(X, x_mean)。不过,只有一个值的等高线图看起来很无聊且信息量不足。使用plt.contourf(X, Y, Z, levels=np.linspace(-100, 0, 80))避免颜色条只有一个值。 -
@JohanC 我的水晶球告诉我他们有不同的
imshow或其他什么,他们想叠加一条代表平均值的水平曲线。 -
@gboffi 因此,
x_mean将是某个区域内 z 值的平均值,而我们缺少允许定位曲线的 z 值......所以,也许plt.contour(X, Y, Z, levels=[x_mean], color='black')使用真正的 Z 值可能会带来一些有用的东西。 -
不,我的想法与您的情况完全不同,不,要绘制等高线图,您需要在表面上定义数据,而您没有这样的表面,至少判断从你的问题的文本。
-
@harryr
z_mean只是一个固定值吗?还是对应每对 x 和 y 的二维数组?请提供一些(玩具)示例数据。如果z_mean只是一个单一的值,则无法获得有意义的轮廓。
标签: python numpy matplotlib plot contour