23

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

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

マーカーの面の色だけを輪郭なしで表示したい。問題は、markeredgecolor = 'none' の場合、マーカーが完全に消えることです。markerfacecolor='none' または色を設定して、markeredgecolor を削除すると、期待どおりに動作します。

Python 2.7で実行されているmatplotlib、numpyなどを最新バージョンに更新しました。

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

4

3 に答える 3

19

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

マーカーをどれだけ大きくしても、 のmarker='o'代わりにを使用しても、 を使用するとマーカー'.'は見えなくなりますmarkeredgecolor='none'

回避策として、エッジの色を面の色と同じに設定できます。

于 2012-04-05T02:20:20.143 に答える
6

matplotlib 1.1 で

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

動作します ( Nonemarkeredgecolor の 'none' ではなく に注意してください)。

markeredgewidth=0.0orの設定markeredgecolor=self.colors[k](Joe Kington の提案による) も機能するはずです。

于 2012-04-05T13:01:47.230 に答える
5

これを試して:

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')
于 2016-11-16T11:54:04.260 に答える