我正在尝试使用python中的matplotlib制作以下数据的等高线图.数据属于这种形式 -
# x y height
77.23 22.34 56
77.53 22.87 63
77.37 22.54 72
77.29 22.44 88
Run Code Online (Sandbox Code Playgroud)
数据实际上包含近10,000个点,我正在从输入文件中读取这些点.然而,z的不同可能值的集合很小(在50-90之间,整数),并且我希望每个这样的不同z具有轮廓线.
这是我的代码 -
import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import csv
import sys
# read data from file
data = csv.reader(open(sys.argv[1], 'rb'), delimiter='|', quotechar='"')
x = []
y = []
z = []
for row in data:
try:
x.append(float(row[0]))
y.append(float(row[1]))
z.append(float(row[2]))
except Exception as e:
pass
#print e
X, Y …Run Code Online (Sandbox Code Playgroud) 我正在使用以下 Python 脚本制作一个 hexbin 图:
pitch = Pitch(
line_color="#747474", pitch_color="#222222", orientation="vertical", half=True, plot_arrow=False
)
fig, ax = pitch.create_pitch()
## color-map
cmap = [
"#222222", "#3A2527", "#52282B", "#6A2B30",
"#762C32", "#822D34", "#8E2F37", "#9A3039",
"#B2323D", "#BE3440", "#CA3542", "#E13746"
]
cmap = colors.ListedColormap(cmap)
hexbin = ax.hexbin(
68 - shots_data['Y'], shots_data['X'], zorder=3, cmap=cmap,
extent=(0, 68, 52, 104), gridsize=22, bins=13, ec="#222222", lw=3
)
Run Code Online (Sandbox Code Playgroud)
上面的代码产生以下输出:
现在我想用最频繁的值在六边形周围添加边框,看起来像这样。请注意,在下图中,白色边框是手绘的,以显示结果的外观。我不知道该怎么做。我应该在代码中添加什么来产生这样的结果。

编辑:
我得到了一些结果,但它们并不完美,这是更新后的脚本:
## Pitch obejct
pitch = Pitch(
line_color="#747474", pitch_color="#222222", orientation="vertical", half=True, plot_arrow=False
)
## create-pitch
fig, ax = pitch.create_pitch()
## …Run Code Online (Sandbox Code Playgroud)