绘制散点图中多个点出现的可变大小/颜色热图

时间:2012-10-21 08:35:05

标签: numpy plot matplotlib

我遇到了以下问题,我希望我能解释它的连贯性。

所以,我在坐标系上有一个(大约10个)离散位置。

现在,我想分析一个程序中的数据,用户可以将每个点标记为A和B之类的东西。

我提取了每个班级的数据点。因此,对于其他类,我有大约60分,而对于其他类,我有大约60分。一个班级代表好点,一个代表坏点。我想找到标签最好/最差的位置。我用机器学习算法做到这一点,我只想用图表来形象化。

我现在想要绘制这些点。所以我每班制作一个情节。但是因为在每个班级中,每个点至少出现一次,所以这两个图看起来完全一样。 但是,出现的数量在不同的位置有不同的分布。 也许A点在A级有20次出现,在B级有1次出现,两个图看起来都是一样的。

所以,我的问题是:在Matplotlib中绘制散点图时,如何考虑点的出现次数?

使用不同颜色(如热图?)可能会有一个很酷的传奇。 或者使用不同的尺寸(例如,更高的数量=更大的cirlce)。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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和面具,我至少可以避免冗余或“不可读”的情节。