【问题标题】:Matplotlib: Gaussian contour plot from two arraysMatplotlib:来自两个数组的高斯等高线图
【发布时间】:2018-05-20 13:11:46
【问题描述】:

我有两个 numpy 数组,一个形状 (239,2) 包含我的数据点,另一个形状 (239,) 包含这些数据点的二元高斯密度值。

如何使用 Matplotlib 在数据点的散点图上为我的密度函数创建等高线图?

目前,当我尝试在 matplotlib 中使用 contour 函数时,我得到了一个 TypeError: Input z must be a 2D array。如果我有每个数据点的 X 轴、Y 轴和概率密度值,为什么 z 必须是 2D 的?我需要以某种方式进行插值吗?

fig, ax = plt.subplots()
ax.scatter(X[:,0], X[:,1], c='green')
ax.scatter(X[:,0], X[:,1], c='orange')
ax.contour(z, X[:,0], X[:,1])           <-- TypeError happens here
plt.show()

X 的形状为 (239, 2),z 的形状为 (239,)

【问题讨论】:

标签: python matplotlib


【解决方案1】:

contour 需要常规二维网格上的 z 值,也许您的数据更适合 tricontour 方法:

from matplotlib.tri import Triangulation
import matplotlib.pyplot as plt
import numpy as np

x = np.random.random((100))
y = np.random.random((100))
z = x * y

tri = Triangulation(x,y)

plt.tricontour(tri, z, )
plt.scatter(x,y, c=z)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    相关资源
    最近更新 更多