我的数据文件包含x,y平面上的随机散乱数据。我想要的只是用纯色填充分散的区域。我的数据没有排序。我曾尝试在matplotlib中使用散点图,但我的数据文件中的点数非常大,因此在散点图中绘制它们会使得结果图的大小非常大。分散的数据在x,y平面上形成小岛。
答案 0 :(得分:3)
您可以使用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)
以查看全部值(热图),而不是0或1。
答案 1 :(得分:1)
import numpy as np
import matplotlib.pylab as plt
x=np.random.rand(10)
y=np.random.rand(10)
plt.figure()
plt.fill(x,y,'b')
plt.show()
还有一个fill_between填充两行之间 matplotlib documentation of them both