【发布时间】:2016-04-12 17:06:03
【问题描述】:
我正在尝试使用 xyz 数据在 matplotlib 中绘制二维等高线图。我有两组要绘制的 Z 数据(z_a 和 z_b)。我已经能够绘制数据并绘制等高线图,但是我无法在任一图表上放置比例(比例应该用于 z 数据)。
当我使用以下代码时,我收到一条错误消息“TypeError: Input z must be a 2D array.”我以为我的 z 数据在一个数组中,所以我不太确定为什么会出现这个错误,有人能解释一下这个问题吗?谢谢!
import numpy as np
import matplotlib.pyplot as plt
x = [68,77,95,111,120,148,148,148,175,185,200,218,228]
y = [135,190,87,149,226,68,112,187,225,149,87,190,135]
z_a = [22.87,22.87,23.75,22.81,22.94,22.94,22.94,22.81,22.87,23.06,23.06,23.0,23.12]
z_b = [24.06,24.06,24.94,24.0,24.06,24.12,24.19,24.06,24.12,24.25,24.25,24.25,30]
f, ax = plt.subplots(1,2, sharex=True, sharey=True)
ax[0].tricontourf(x,y,z_a, 100)
ax[0].plot(x,y, 'ko ')
ax[1].tricontourf(x,y,z_b, 100)
ax[1].plot(x,y, 'ko ')
plt.contourf(x, y, z_a, 8)
contour_labels = plt.contour(x, y, z_a, 8, colors='black', linewidth=.5)
plt.show()
【问题讨论】:
-
问题是
plt.contour将二维矩阵作为输入,而您正在尝试绘制一维向量z_a。看看例子here。
标签: python matplotlib