いくつかの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。
ご協力いただきありがとうございます。
これは数か月前に修正されたバグだと思います: https://github.com/matplotlib/matplotlib/pull/598
マーカーの大きさに関係なく、またはmarker='o'
の代わりに'.'
を使用する場合でも、markeredgecolor='none'
を使用する場合、マーカーは表示されません。
回避策として、エッジの色を顔の色と同じに設定するだけです。
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の提案どおり)も動作するはずです。
これを試して:
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')