Вы должны копировать подписчика каждый раз. В противном случае вы каждый раз изменяете один и тот же объект. Просто используйте s = copy(Subscriber)
Решение будет зависеть от того, как организованы данные.
Если данные x
и y
уже определяют сетку, их можно легко преобразовать в четырехугольную сетку. Например,
#x y z
4 1 3
6 1 8
8 1 -9
4 2 10
6 2 -1
8 2 -8
4 3 8
6 3 -9
8 3 0
4 4 -1
6 4 -8
8 4 8
может отображаться как contour
, используя
import matplotlib.pyplot as plt
import numpy as np
x,y,z = np.loadtxt("data.txt", unpack=True)
plt.contour(x.reshape(4,3), y.reshape(4,3), z.reshape(4,3))
(a) В случае данные не живут на четырехсторонней сетке, можно интерполировать данные по сетке. Один из способов сделать это - сам matplotlib, используя matplotlib.mlab.griddata
.
import matplotlib.mlab
xi = np.linspace(4, 8, 10)
yi = np.linspace(1, 4, 10)
zi = matplotlib.mlab.griddata(x, y, z, xi, yi, interp='linear')
plt.contour(xi, yi, zi)
(b) Наконец, можно конструировать контур полностью без использования четырехсторонней сетки. Это можно сделать, используя tricontour
.
plt.tricontour(x,y,z)
Пример сравнения последних двух методов находится на странице matplotlib .
code
– Hg1 13 March 2017 в 15:44