Matplotlib:绘制独立于 x 和 y 的轮廓线
Matplotlib: Drawing contour lines independent of x and y
我正在尝试绘制与 x 和 y 坐标相关联的等高线(高程)。我已经阅读了有关当 z 由 x 和 y 定义时如何在 Matplotlib 上绘制等高线的示例 here,但是我如何绘制独立于 x 和 y 的等高线?
这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
data = [(0, 200, 140), (100, 430, 260), (800, 340, 320), (250, 110, 430), (290, 40, 100), (590, 35, 180)]
x = np.arange(0, 900, 20)
y = np.arange(0, 500, 20)
X, Y = np.meshgrid(x, y)
Z = [i[2] for i in data]
Z = np.array(Z)
plt.figure()
plt.contour(X, Y, Z)
plt.show()
我得到一个错误 "TypeError: Input z must be a 2D array."
这是我第一次尝试绘制等高线,非常感谢任何帮助。
鉴于只有 6 个数据点,从这些点绘制的等高线图可能信息量不大。尽管如此,对于更多点来说,这个概念是相同的。
当然不能画x,y,z独立的等高线。如果你有 6 个 z 点,你需要 6 个 x 点和 6 个 y 点——你已经有了。所以解决方案可能相当简单 - 只需使用 tricontour
而不是 contour
:
import numpy as np
import matplotlib.pyplot as plt
data = [(0, 200, 140), (100, 430, 260), (800, 340, 320),
(250, 110, 430), (290, 40, 100), (590, 35, 180)]
x,y,z = zip(*data)
plt.figure()
plt.tricontour(x,y,z)
plt.show()
更一般地说,您还可以对数据进行插值。参见 Make contour of scatter。
我正在尝试绘制与 x 和 y 坐标相关联的等高线(高程)。我已经阅读了有关当 z 由 x 和 y 定义时如何在 Matplotlib 上绘制等高线的示例 here,但是我如何绘制独立于 x 和 y 的等高线?
这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
data = [(0, 200, 140), (100, 430, 260), (800, 340, 320), (250, 110, 430), (290, 40, 100), (590, 35, 180)]
x = np.arange(0, 900, 20)
y = np.arange(0, 500, 20)
X, Y = np.meshgrid(x, y)
Z = [i[2] for i in data]
Z = np.array(Z)
plt.figure()
plt.contour(X, Y, Z)
plt.show()
我得到一个错误 "TypeError: Input z must be a 2D array."
这是我第一次尝试绘制等高线,非常感谢任何帮助。
鉴于只有 6 个数据点,从这些点绘制的等高线图可能信息量不大。尽管如此,对于更多点来说,这个概念是相同的。
当然不能画x,y,z独立的等高线。如果你有 6 个 z 点,你需要 6 个 x 点和 6 个 y 点——你已经有了。所以解决方案可能相当简单 - 只需使用 tricontour
而不是 contour
:
import numpy as np
import matplotlib.pyplot as plt
data = [(0, 200, 140), (100, 430, 260), (800, 340, 320),
(250, 110, 430), (290, 40, 100), (590, 35, 180)]
x,y,z = zip(*data)
plt.figure()
plt.tricontour(x,y,z)
plt.show()
更一般地说,您还可以对数据进行插值。参见 Make contour of scatter。