web-dev-qa-db-ja.com

edgecolor = 'none'の場合、matplotlibマーカーは消えます

いくつかのPCAデータの散布図を作成しようとしています。かなり典型的なコードをいくつか実行します。

plt.plot(pca[:,0], pca[:,1], '.',ms=3,  markerfacecolor = self.colors[k],
            markeredgecolor = 'none')

マーカーの顔の色だけをアウトラインなしで表示したいです。問題は、markeredgecolor = 'none'の場合、マーカーが完全に消えることです。 markerfacecolor = 'none'またはカラーを設定して、markeredgecolorを削除すると、期待どおりに機能します。

Matplotlib、numpyなどを最新バージョンに更新し、Python 2.7。

ご協力いただきありがとうございます。

21
Mat Leonard

これは数か月前に修正されたバグだと思います: https://github.com/matplotlib/matplotlib/pull/598

マーカーの大きさに関係なく、またはmarker='o'の代わりに'.'を使用する場合でも、markeredgecolor='none'を使用する場合、マーカーは表示されません。

回避策として、エッジの色を顔の色と同じに設定するだけです。

16
Joe Kington

Matplotlib 1.1で

>> plt.plot(pca[:,0], pca[:,1], '.', ms=3, markerfacecolor=self.colors[k],
...          markeredgecolor=None)

動作します(markeredgecolorの「none」の代わりにNoneに注意してください)。

設定markeredgewidth=0.0またはmarkeredgecolor=self.colors[k](Joe Kingtonの提案どおり)も動作するはずです。

4
bmu

これを試して:

x = np.array(np.random.Rand(10))
y = np.array(np.random.Rand(10))
c = np.arange(len(x))
plt.scatter(x,y, c=c, s=500, cmap = plt.cm.Paired, alpha = 0.5,linewidths=0)

または、これも良いオプションです。

plt.scatter(x,y, c=c, s=500, cmap = plt.cm.Paired, alpha = 0.5,edgecolor='face')
3