我使用pcolor
来生成下面的图(代码如下)。它有一个colorbar
在对数尺度和x值也在对数尺度。问题是这个图中的矩形有不同的宽度(我用了一个红色网格来更好地显示矩形,这是特伦顿的建议)。有什么方法可以确保每个矩形的宽度都一样吗?
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
import numpy as np
# Generate Values
x_values = np.geomspace(start=1, stop=1e-2, num=6)
y_values = np.arange(start=0, stop=50, step=4, dtype=int)
x_grid, y_grid = np.meshgrid(x_values, y_values)
z_values = np.random.randn(len(y_values), len(x_values))
fig, ax = plt.subplots()
im = ax.pcolor(x_grid, y_grid, z_values, norm=matplotlib.colors.LogNorm(), ec='r', lw=2)
ax.set_xscale('log')
fig.colorbar(im)
plt.show()
1条答案
按热度按时间r7xajy2e1#
您需要指定容器边缘。在
numpy
中可能有一种更好的方法来做到这一点,但想法很简单-转换到对数空间,通过线性插值得到bin边缘,然后转换回正常空间。