2012-10-21 55 views
2

我遇到以下問題,我希望我可以解釋它是連貫的。繪製散點圖中多個點的多個大小/色彩熱圖

所以,我有一個數字(大約10)的座標系上的離散位置。

現在,我想分析程序中的數據,用戶可以將每個點標記爲somethingA和somethingB。

我提取了每個類的數據點。所以我對於A級課程約有60分,而對其他課程則要少一點。一類代表好點,一類代表不好的一點。我想找到最具有好/壞標籤的職位。我使用機器學習算法來做到這一點,我只是想用繪圖來想象它。

我現在想繪製這些點。所以我爲每個班級製作一個情節。但是因爲在每個班級中每個點至少出現一次,所以這兩個地塊看起來完全一樣。 但是,發生的數量在位置上有不同的分佈。 也許A點在A級有20次出現,B級有1次,這兩個圖看起來都是一樣的。

所以,我的問題是:在Matplotlib中繪製分散圖時,如何將點的出現次數考慮進去?

或者用不同的顏色(如熱圖?)也許有一個很酷的傳說。 或具有不同的尺寸(例如較高的量=較大的捲尺)。

任何幫助,將不勝感激!

回答

1

我不知道這是否對您有幫助,但我遇到了一個問題,我想要一個散點圖來反映這兩個位置以及歸因於數據點的兩個變量。

由於在散射功能不允許變量本身,這意味着一個具有通常的方式來指定顏色代碼和尺寸大小和顏色,這意味着像

 ax.scatter(..., c=whatEverFunction, s=numberOfOccurences, ...) 

某事對我來說沒有工作。

我所做的就是將我想要顯示的兩個變量的值分開。在我的情況下,變量nodeMass和另一個變量。

for i in range(Number): 
    mask[i] = False 
    if(lowerBound1<variableOne[i]<upperBound1): 
     mask[i] = True & pmask[i] 
    if len(positionX[mask])>0: 
     ax.scatter(positionX[mask], positionY[mask], positionZ[mask],C='#424242',s=10, edgecolors='none') 
for i in range(Number): 
    mask[i] = False 
    if(lowerBound2<variableOne[i]<upperBound2): 
     mask[i] = True & pmask[i] 
if len(positionX[mask])>0: 
     ax.scatter(positionX[mask], positionY[mask], positionZ[mask],c='#9E0050',s=25,edgecolors='none') 

我知道這不是很優雅,但它對我很有用。我必須爲我的變量創建儘可能多的循環。使用if-querys和麪具我至少可以避免多餘的或「不可讀的」情節。

+0

Aaah,好的。感謝您分享您的解決方案。我會爲我的情況嘗試一下。 – ruffy