2012-10-21 52 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