我有一个数据文件,包含x,y平面上随机散乱的数据。我只想用纯色填充散射区域。我的数据没有分类。我尝试在matplotlib中使用scatter plot,但是数据文件中的点数量很大,所以在scatter中绘制它们会使生成的图变得很大。散乱的数据在x,y平面上形成小岛。

最佳答案

可以使用numpy的histogram2d方法计算x,y值的直方图(2D)。然后绘制数组,对于所有非零箱为true,对于所有零箱为false。可以使用bins参数控制直方图的分辨率。此方法返回一个由3个数组组成的元组:2D直方图和两个1D数组,分别对应每个“边”(x和y)上的bin步骤。您可以使用range参数控制步长值。
例如:

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(101)
x = np.random.normal(0,1,10000)
y = np.random.normal(0,1,10000)

hist,xedge,yedge= np.histogram2d(x,y,bins=100,range=[[-4,4],[-4,4]])

plt.imshow(hist==0,
           origin='lower',
           cmap=plt.gray(),
           extent=[xedge[0],xedge[-1],yedge[0],yedge[-1]])

plt.savefig('hist2d.png')
plt.show()

这将导致:
黑点表示有数据的地方,白点表示没有数据的地方。直方图使用imshow方法表示,该方法用于绘制图像或矩阵。默认情况下,它将原点设置在左上角,因此您要么要更改参数origin='lower',要么要适当调整extent参数,该参数控制范围值:[intial x,final x,initial y,final y]。您可以通过调整color map来控制颜色方案。
正如@joaquin在评论中提到的,您也可以简单地绘制imshow(hist)来查看值的完整范围(heatmap),而不是0或1。

关于python - 如何填充matplotlib中的分散区域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8794044/

10-12 19:23