1
散布図はほぼ円のように見えます。外側の点を線で結合して、ほぼ円形のような形にしたいと思っています。 matplotlibでそれを行う方法はありますか?散布図の点への結合
散布図はほぼ円のように見えます。外側の点を線で結合して、ほぼ円形のような形にしたいと思っています。 matplotlibでそれを行う方法はありますか?散布図の点への結合
あなたの散布図の外側のポイントを検索し、matplotlib.collections
からPolyCollectionを使用して、これらの点を接続するためにscipy.spatial
からConvexHullを使用することができます。
from matplotlib import pyplot as plt
import numpy as np
from scipy.spatial import ConvexHull
from matplotlib.collections import PolyCollection
fig, ax = plt.subplots()
length = 1000
#using some normally distributed data as example:
x = np.random.normal(0, 1, length)
y = np.random.normal(0, 1, length)
points = np.concatenate([x,y]).reshape((2,length)).T
hull = ConvexHull(points)
ax.scatter(x,y)
ax.add_collection(PolyCollection(
[points[hull.vertices,:]],
edgecolors='r',
facecolors='w',
linewidths=2,
zorder=-1,
))
plt.show()
結果は次のようになります。
編集
実際には、PolyCollectionをスキップし、船体の頂点を使用して単純な線図を作成することができます。あなただけの頂点のリスト(一つの要素長く、そのリストを作る)に最初の頂点を追加することにより、ライン円形をしなければならない:
circular_hull_verts = np.append(hull.vertices,hull.vertices[0])
ax.plot(
x[circular_hull_verts], y[circular_hull_verts], 'r-', lw=2, zorder=-1,
)
Woooooaaaaaahhh – DilithiumMatrix
おかげで、それは魔法でした! – johndaniel