Python Matplotlib-等高线图

Python Matplotlib-等高线图,python,matplotlib,contour,Python,Matplotlib,Contour,我在matplotlib中的等高线图方面有点困难。我已经通读了说明和示例,但似乎不知道我需要做什么 我有x,y,z数据。数据基本如下: x y z 1.1 2.1 0 0.9 3.2 1 2.6 4.1 0 3.1 1.1 1 0.3 0.9 1 ... 这是一个x-y坐标的长列表,每个点都是0-1。在棒球中,用例是球(1),击球(0)穿过击球手。当我使用plt.hexbin绘制数据时,您会看到以下内容: 我想做的是在50%的直线上画一个等高线。如下图所示:

我在matplotlib中的等高线图方面有点困难。我已经通读了说明和示例,但似乎不知道我需要做什么

我有x,y,z数据。数据基本如下:

x    y    z
1.1  2.1  0
0.9  3.2  1
2.6  4.1  0
3.1  1.1  1
0.3  0.9  1
...
这是一个x-y坐标的长列表,每个点都是0-1。在棒球中,用例是球(1),击球(0)穿过击球手。当我使用plt.hexbin绘制数据时,您会看到以下内容:

我想做的是在50%的直线上画一个等高线。如下图所示:

我希望使用等高线,但我不清楚如何获得足够的数据格式来绘制等高线图,并使用“水平”来绘制50%的等高线。显然,函数
轮廓(X,Y,Z)
需要二维数组,因此根据我掌握的数据,我不清楚我到底需要做什么


是否有一种方法可以将我拥有的数据放入函数中,以获得我想要的等高线图,如hexbin?

首先,您需要从x和y数据创建网格:

X,Y = np.meshgrid(data[:,0], data[:,1])
然后可以插值z轴网:

# Choose one option
# Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='nearest')
 Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='linear')
# Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='cubic')
并使用等高线绘制数据,指定标高为0.5:

levels = 0.5
contour(X,Y,Z,levels)

让我知道这个方法是否适合您。

Super-这是一个非常清楚和有用的答案。我现在就试试。我做了一个小的编辑,以与您的变量名对齐。对不起,一个澄清问题。你能解释一下
func(…)
行吗。我假设这是我自己定制的函数,用于在z网格上进行插值,而不是标准的python函数抱歉,Axel。。。你能澄清什么是
数据吗?这是我想要绘制的实际数据吗?例如,我的示例中Z的平均值我删除了func行。为griddata函数创建一个元组就足够了。