我有一个对数分布的大型数据集。我想制作一张热图,所以我做了一个 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()