【问题标题】:Python matplotlib: how to let matrixplot have variable column widthsPython matplotlib:如何让矩阵图具有可变的列宽
【发布时间】:2018-11-02 21:26:38
【问题描述】:

我有一个简单的需求,但找不到简单的解决方案。我有一个要绘制的矩阵,但我希望行/列具有给定的宽度。

看起来像块矩阵的东西,你可以在其中告诉块大小。

接受具有相同视觉结果的任何解决方法。

import matplotlib.pyplot as plt
import numpy as np


samplemat = np.random.rand(3,3)
widths = np.array([.7, .2, .1])

# Display matrix
plt.matshow(samplemat)

plt.show()

【问题讨论】:

    标签: python matplotlib imshow


    【解决方案1】:

    matshowimshow 使用相同大小的单元格。因此它们不能在这里使用。相反,您可以使用pcolorpcolormesh。这需要提供单元格边缘的坐标。
    因此,您首先需要根据给定的宽度计算它们。假设您希望它们从 0 开始,您可以总结它们。

    import matplotlib.pyplot as plt
    import numpy as np; np.random.seed(43)
    
    
    samplemat = np.random.rand(3,3)
    widths = np.array([.7, .2, .1])
    coords = np.cumsum(np.append([0], widths))
    X,Y = np.meshgrid(coords,coords)
    # Display matrix
    plt.pcolormesh(X,Y,samplemat)
    
    plt.show()
    

    【讨论】:

    • 好的,谢谢!我只会做X,Y = np.meshgrid(coords,1- coords) 来改变对角线边。
    猜你喜欢
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多