2012-04-04 215 views
18

我試圖製作一些PCA數據的散點圖。我做了一些相當典型的代碼:當edgecolor ='none'時Matplotlib標記消失

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

我希望它只顯示標記顏色,沒有輪廓。問題是當markeredgecolor ='none'時標記完全消失。當我設置markerfacecolor ='none'或顏色並刪除markeredgecolor時,它可以像預期的那樣工作。

我剛剛更新了matplotlib,numpy等到Python 2.7上運行的最新版本。

感謝您的幫助。

+3

你可以嘗試'markersize'設置爲一個較大的值。 'markersize'可以是'plot()'的一個kwarg,或者你可以縮寫爲'ms'。例如:'...,markersize = 20,...' – bernie 2012-04-04 19:33:54

+0

對於那些試圖用'matplotlib.errorbar'使用下面推薦的'markeredgecolor = None'來做到這一點的人,並沒有刪除勾勒符號的黑色。相反'markeredgecolor ='none''did work(這些符號不可見)。毫不奇怪,似乎導致這個問題的錯誤在過去的3年裏得到了修復。 – 2015-04-09 18:31:37

回答

15

我認爲這是幾個月前被修正了一個錯誤:https://github.com/matplotlib/matplotlib/pull/598

不管你多大做出標記,或者如果您使用marker='o'代替'.',如果使用markeredgecolor='none'他們將是無形的。

作爲一種解決方法,您可以將邊緣顏色設置爲與臉部顏色相同。

4

在matplotlib 1.1

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

作品(注意None,而不是爲markeredgecolor '無')。

設置markeredgewidth=0.0markeredgecolor=self.colors[k](正如Joe Kington所建議的)也應該起作用。

+0

'self.colors [k]'是什麼意思?當我運行類似的代碼時,它說'NameError:name'self'沒有被定義'。 – LWZ 2013-07-30 04:14:08

+0

它來自問題。看起來好像OP在一個類中使用了這個命令,它有一個colors屬性(這是一個字典)。如果您只是想使用代碼行來繪製某些內容,您可以用任何matplotlib顏色替換它(例如像'green'這樣的字符串)。 – bmu 2013-07-30 05:55:23

3

試試這個:

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') 
相關問題