Чтобы построить точечный график, вам не нужно ничего делать с вашими данными.Просто нанесите столбцы там как они есть.
Чтобы получить значения, которые вы хотите задать в вопросе, вы можете взять уникальные элементы столбца x и y и изменить форму столбца z в соответствии с этими измерениями.
u="""x y z
-1 -1 100
-1 0 50
-1 1 100
0 -1 50
0 0 0
0 1 50
1 -1 100
1 0 50
1 1 100"""
import io
import numpy as np
data = np.loadtxt(io.StringIO(u), skiprows=1)
x = np.unique(data[:,0])
y = np.unique(data[:,1])
Z = data[:,2].reshape(len(x), len(y))
print(Z)
print
[[100. 50. 100.]
[ 50. 0. 50.]
[100. 50. 100.]]
Разные координаты y теперь расположены вдоль второй оси массива, что довольно необычно для построения графиков с помощью matplotlib.
Следовательно, чтобы получить значения в сетке для построения с контуром, вам нужно сделать одинаковое изменение формы для всех трех столбцов и транспонировать (.T
) их.
import matplotlib.pyplot as plt
X = data[:,0].reshape(len(x), len(y)).T
Y = data[:,1].reshape(len(x), len(y)).T
Z = data[:,2].reshape(len(x), len(y)).T
plt.contour(X,Y,Z)
plt.show()
![enter image description here](https://i.stack.imgur.com/PQOlx.png)