我已經用matplotlib繪製了這兩個系列的2000點。從圖片看來,第一個2000分的佔用面積似乎比第二個2000分小。但是如果我想定量計算2000點的第一和第二連續點佔用了多少區域,我該怎麼辦?如何計算蟒蛇二維散點佔用區域
我真的很感激任何幫助,建議或意見。
非常感謝。
我已經用matplotlib繪製了這兩個系列的2000點。從圖片看來,第一個2000分的佔用面積似乎比第二個2000分小。但是如果我想定量計算2000點的第一和第二連續點佔用了多少區域,我該怎麼辦?如何計算蟒蛇二維散點佔用區域
我真的很感激任何幫助,建議或意見。
非常感謝。
此問題與matplotlib
無關,還需要定義「佔用區域」,根據您擁有的數據類型的不同,這可能會有所不同。如果你想要一種非嚴格逼近,這裏是做到這一點的一種方法:
首先,一些測試數據:
import matplotlib
import matplotlib.pyplot as plt
import numpy
x = numpy.random.normal(size=10000)
y = numpy.random.normal(size=10000)
fig = plt.figure()
s = fig.add_subplot(1, 1, 1, aspect=1)
s.set_xlim(-4, 4)
s.set_ylim(-4, 4)
s.scatter(x, y)
fig.savefig('t1.png')
計算二維直方圖來估算點的密度。 注意:垃圾箱數量和範圍是您必須針對您的數據進行調整的。
hist, xedges, yedges = numpy.histogram2d(x, y, bins=20, range=[[-4, 4], [-4, 4]])
fig = plt.figure()
s = fig.add_subplot(1, 1, 1)
s.set_xlim(-4, 4)
s.set_ylim(-4, 4)
s.imshow(
hist, interpolation='nearest',
extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]],
cmap=matplotlib.cm.viridis)
fig.savefig('t2.png')
最後,找到地方計數的數量比一些預定義的值。 注:你必須得調整這個門檻,讓與「佔領」和「非佔領」地區所需的區別:
over_threshold = hist > 10
fig = plt.figure()
s = fig.add_subplot(1, 1, 1)
s.set_xlim(-4, 4)
s.set_ylim(-4, 4)
s.imshow(
over_threshold, interpolation='nearest',
extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]],
cmap=matplotlib.cm.viridis)
fig.savefig('t3.png')
area = over_threshold.sum() * (xedges[1] - xedges[0]) * (yedges[1] - yedges[0])
print(area)
所有繪圖,當然,是純粹是說明性的,對算法來說不是必需的。
非常感謝!這正是我想要的! –
看看'scipy''ConvexHull',http://stackoverflow.com/questions/35664675/in-scipys-convexhull-what-does-area-measure – hpaulj