matplotlib - imshow 非均匀矩阵 bin 大小

标签 matplotlib imshow

我正在尝试使用 imshow 创建一个图像,但我的矩阵中的 bin 不相等。
例如下面的矩阵

C = [[1,2,2],[2,3,2],[3,2,3]]

适用于 X = [1,4,8]Y = [2,4,9]我知道我可以做 xticksyticks ,但我希望轴相等..这意味着我将需要构建 imshow 的正方形具有不同的大小。
是否可以?

最佳答案

这似乎是 pcolormesh 的工作.
来自 When to use imshow over pcolormesh :

Fundamentally, imshow assumes that all data elements in your array are to be rendered at the same size, whereas pcolormesh/pcolor associates elements of the data array with rectangular elements whose size may vary over the rectangular grid.


pcolormesh将矩阵绘制为单元格,并将单元格的 x 和 y 坐标作为参数,这允许您以不同的大小绘制每个单元格。

我假设您的示例数据的 X 和 Y 是单元格的大小。所以我将它们转换为坐标:
xSize=[1,4,9]
ySize=[2,4,8]
x=np.append(0,np.cumsum(xSize)) # gives [ 0  1  5 13]
y=np.append(0,np.cumsum(ySize)) # gives [ 0  2  6 15]

然后,如果您想要与 imshow 类似的行为,您需要恢复 y 轴。
c=np.array([[1,2,2],[2,3,2],[3,2,3]])
plt.pcolormesh(x,-y,c)

这给了我们:

pcolor to replace imshow

关于matplotlib - imshow 非均匀矩阵 bin 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35062243/

相关文章:

python - 使用 imshow 和 twiny : cannot set xlim

python - 使用实时相机预览更新 matplotlib 中的帧

python - 如何在不同的图上绘制数据集

python - 如何绘制不同日期最大值的直方图?

image - matlab中image和imagesc有什么区别

python - 如何在 y 轴上手动或自动添加缺失的 y 标签,该标签与其他规则间隔不一致

c++ - 在一个 OpenCV 中显示不同的窗口

python - 如何防止使用 matplotlib 对 python 条进行字母排序?

python - 在 wxpython 中嵌入实时更新的 matplotlib 图

python - 如何使用 matplotlib 创建超过 100 个值的可理解条形图?