标签: histogram2d

使用散点图数据在MatPlotLib中生成热图

我有一组X,Y数据点(大约10k),很容易绘制为散点图,但我想表示为热图.

我查看了MatPlotLib中的示例,他们似乎都已经开始使用热图单元格值来生成图像.

有没有一种方法可以将一堆x,y,所有不同的,转换为热图(其中x,y频率较高的区域会变得"温暖")?

python matplotlib heatmap histogram2d

172
推荐指数
8
解决办法
19万
查看次数

请在Python中详细解释2D直方图

我试图了解2D直方图的值是什么.

我有2个相同长度X和Y的numpy数组(每个数字都有浮点数).

例如X的前10个值:[88,193,60,98,78,100,75,76,130]

和Y:[18.,9.,36.1,18.5,34.3,32.9,32.2,22,15.]

我用的时候:

import matplotlib.pyplot as plt

plt.hist2d(X,Y, bins=(10,20)) 
Run Code Online (Sandbox Code Playgroud)

我得到了一个2D直方图.

但是这是什么意思?

1D直方图只显示我拥有的每件物品的数量.

请解释一下2D中的含义.

提前致谢!

python numpy matplotlib histogram2d

9
推荐指数
1
解决办法
9807
查看次数

使用healpy使用HEALPix像素化制作2D直方图

数据是天空中对象的坐标,例如,如下所示:

import pylab as plt
import numpy as np
l = np.random.uniform(-180, 180, 2000)
b = np.random.uniform(-90, 90, 2000)
Run Code Online (Sandbox Code Playgroud)

我想做一个2D直方图,以便(l, b)在Mollweide投影上使用HEALPix像素化来绘制某个点的密度与天空中坐标的映射。如何使用healpy做到这一点?

本教程:

http://healpy.readthedocs.io/en/v1.9.0/tutorial.html

说了如何绘制一维数组或拟合文件,但我没有找到如何使用这种像素化来绘制二维直方图。

我也找到了此功能,但无法正常工作,因此卡住了。

hp.projaxes.MollweideAxes.hist2d(l, b, bins=10)
Run Code Online (Sandbox Code Playgroud)

我可以这样在Mollweide投影中绘制这些点:

l_axis_name ='Latitude l (deg)'
b_axis_name = 'Longitude b (deg)'

fig = plt.figure(figsize=(12,9))
ax = fig.add_subplot(111, projection="mollweide")
ax.grid(True)

ax.scatter(np.array(l)*np.pi/180., np.array(b)*np.pi/180.)

plt.show()
Run Code Online (Sandbox Code Playgroud)

预先非常感谢您的帮助。

python plot astronomy healpy histogram2d

7
推荐指数
1
解决办法
541
查看次数

在numpy histogram2d中"解压缩的值太多"

我正在使用numpy histogram2d来计算两个变量的二维直方图的可视化表示的值:

H, xedges, yedges = np.histogram2d(Z[:,0], Z[:,1], bins=100)
Run Code Online (Sandbox Code Playgroud)

其中Z是一个numpy矩阵

我得到的错误是:

Traceback (most recent call last):
File "/home/.../pca_analysis.py", line 141, in <module>
   H, xedges, yedges = np.histogram2d(Z[:,0], Z[:,1], bins=100)
File "/usr/lib/python2.7/dist-packages/numpy/lib/twodim_base.py", line 615, in histogram2d
   hist, edges = histogramdd([x,y], bins, range, normed, weights)
File "/usr/lib/python2.7/dist-packages/numpy/lib/function_base.py", line 281, in histogramdd
   N, D = sample.shape
ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么我会收到这个错误.我尝试使用随机值的histogram2d函数,它正常工作.我也尝试在numpy数组和简单列表中转换Z [:,0]和Z [:,1],但我遇到了同样的问题.

python numpy histogram histogram2d

7
推荐指数
1
解决办法
4718
查看次数

使用hist2d在matplotlib中创建对数线性图

我只是想知道是否可以这样做.我试图使用numpy logspace显式设置bin,我也尝试将xscale设置为'log'.这些选项都不起作用.有没人试过这个?

我只想要一个带有对数x轴和线性y轴的二维直方图.

python matplotlib histogram2d

7
推荐指数
1
解决办法
3728
查看次数

3D直方图和轮廓图Python

我的matplotlib的contourf函数有问题.我有一个txt数据文件,我从中导入我的数据.我有数据列(pm1和pm2),我正在执行2D直方图.我想将此数据绘制为3D直方图和等高线图,以查看最大值的位置.

这是我的代码:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
rows = np.arange(200,1300,10)

hist, xedges, yedges = np.histogram2d (pm1_n, pm2_n, bins = (rows, rows) )
elements = (len(xedges) - 1) * (len(yedges) - 1)


xpos, ypos = np.meshgrid(xedges[:-1], yedges[:-1])

xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros(elements)
dx = 0.1 * np.ones_like(zpos)
dy = dx.copy()
dz = hist.flatten()

#####The problem is here#####

#ax.contourf(xpos,ypos,hist)
#ax.bar3d(xpos, ypos, zpos, dx, dy, dz, zsort='average')

plt.show()
Run Code Online (Sandbox Code Playgroud)

我可以绘制3D条形图,但我不能绘制轮廓之一,如果我把hist在contourf功能我得到的错误: Length of x must be number …

python matplotlib histogram contour histogram2d

5
推荐指数
1
解决办法
1184
查看次数

在创建直方图时考虑错误

我有一组N观察(x[i], y[i]), i=0..N在2D空间中作为点分布.每个点都有坐标(e_x[i], e_y[i], i=0..N)中的相关错误以及附加到它的权重(w[i], i=0..N).

我想这些生成的二维直方图N百分点,占不仅为权重,但也为错误,这将导致各点进行传播可能很多箱中如果误差值足够大(假设一个标准高斯分布对于错误,尽管可能会考虑其他分布).

我看到numpy.histogram2d有一个weights参数,所以这是照顾.问题是如何解释每个N观察点的错误.

有没有让我这样做的功能?我愿意在任何事情numpyscipy.

python numpy histogram scipy histogram2d

5
推荐指数
1
解决办法
250
查看次数

如何在没有对数缩放图像的情况下应用对数轴标签(matplotlib imshow)

我有一个大数据集,在分布上是对数的。我想做一个热图,所以我做了一个 2D 直方图并将其传递给 implot。因为数据是对数的,所以我将数据的对数传递给直方图。但是,当我绘制绘图时,我希望恢复轴(即 10^hist bin 值)和对数轴。如果我将轴设置为 log 样式,则图像看起来全部倾斜。当我将数据传递给直方图时,数据已经“记录”了,所以我不希望图像受到影响,只是轴受到影响。所以,在下面的例子中,我想要左边的图像和右边的轴。

我想我可以用一个假的叠加轴来做到这一点,但如果有更好的方法,我不喜欢做那种事情......

在此处输入图片说明

import numpy as np
import matplotlib.pyplot as plt

x=10**np.random.random(10000)*5
y=10**np.random.random(10000)*5

samps, xedges, yedges = np.histogram2d(np.log10(y), np.log10(x),     bins=50)    

ax = plt.subplot(121)

plt.imshow(samps, extent=[0,5,0,5])
plt.xlabel('Log10 X')
plt.ylabel('Log10 Y')

ax = plt.subplot(122)    
plt.imshow(samps, extent=[10**0,10**5,10**0,10**5])
plt.xlabel('X')
plt.ylabel('Y')
plt.xscale('log')
plt.yscale('log')
plt.show()
Run Code Online (Sandbox Code Playgroud)

python numpy axes matplotlib histogram2d

5
推荐指数
1
解决办法
1846
查看次数

seaborn Jointplot 颜色按密度

我正在为具有数百万个数据点的一些数据制作二维直方图。matplotlib.hist2d(x,y,bins,norm=LogNorm())效果很好,并在大约 5 秒内生成一个图,但我喜欢seaborn.jointplot(). 如何seaborn.jointplot()使用matplotlib.hist2d()附图中的点的对数密度为点着色?使用 KDE 花费的时间太长(大约一分钟后我放弃了),而且我有很多数字要创建。所以“获得”颜色的时间是一个因素。或者,如何将边际直方图添加到matplotlib.hist2d()

plt.hist2d(x,y,100,norm=LogNorm(),cmap='jet')

在此处输入图片说明

sns.jointplot(x=x, y=y)

在此处输入图片说明

python matplotlib histogram2d seaborn

4
推荐指数
2
解决办法
4435
查看次数