2017-03-14 20 views
1

有する三角形のエッジのみドロネーシンプレックス戻りのtriplot 2 Line2Dの両方のオブジェクト、エッジノードのリスト:プロットmatplotlibのをtriplot

tri=scipy.spatial.Delaunay(points) 
plt.triplot(points[:,0],points[:,1],tri.simplices.copy(),'k-o', label='Delaunay\ntriangulation') 

I三角形ノードのマーカーなしでドローネ三角形分割をプロットすることができる方法、 (エッジのみ)? また、凡例からマーカエントリを削除したいと思います( 'k-0'を 'k-'で置換すると凡例に2つのエントリが作成されます)。 delaunay

答えて

1

plt.triplotは、2つの凡例エントリを生成します。最初のものはエッジであり、2番目のものはポイント(ノード)です。マーカーがmarker=Noneに設定されていても、この凡例が表示されます。

凡例エントリを取り除く最も簡単な方法は、凡例ハンドル(ax.get_legend_handles_labels())を取得して、凡例を最初のもののみを使用して作成することです。この時点で

h, l = plt.gca().get_legend_handles_labels() 
plt.legend(handles=[h[0]],labels=[l[0]]) 

それは、ノードマーク("k-o")か否か("k-")を持っているかどうかをユーザーが選択します。凡例エントリは1つだけです。

enter image description here

import numpy as np; np.random.seed(6) 
import scipy.spatial 
import matplotlib.pyplot as plt 

points=np.random.rand(7, 2) 

tri=scipy.spatial.Delaunay(points) 
plt.triplot(points[:,0],points[:,1],tri.simplices.copy(),'k-o', 
      label='Delaunay\ntriangulation') 

h, l = plt.gca().get_legend_handles_labels() 
plt.legend(handles=[h[0]],labels=[l[0]]) 
plt.show() 
+0

ありがとう!それは確かに最も簡単な方法でした。そして今、私は凡例を制御する方法を知っています。 – Daniel

関連する問題