我有一个数据集,其分布呈对数形态。我想制作一个热图,因此我做了一个2D直方图,并将其传递给implot。由于数据是对数的,所以我将数据的对数传递给了直方图。然而,当我制作图表时,我希望轴被还原(即10^hist bin values)并且是对数轴。如果我将轴设置为对数样式,那么图像看起来就会歪曲。数据已经从我传递给直方图时进行了“对数化”,因此我不希望影响图像,只是轴。因此,在下面的示例中,我希望左侧是图像,右侧是轴。
我猜我可以用一个虚假的叠加轴来实现它,但如果有更好的方法,我不喜欢这样做...
我猜我可以用一个虚假的叠加轴来实现它,但如果有更好的方法,我不喜欢这样做...
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()