【问题标题】:How to plot an image from a connection matrix?如何从连接矩阵中绘制图像?
【发布时间】:2018-12-19 06:33:20
【问题描述】:

我想编写一个脚本来从连接矩阵创建图像。基本上,只要矩阵中有“1”,我希望该区域在图像中被着色。例如 -

我使用 Photoshop 创建了这张图片。但是我有一个很大的数据集,所以我必须自动化这个过程。如果有人能指出我正确的方向,那将非常有帮助。

编辑

我使用脚本后得到的图像是这样的。这是因为矩阵很大 (19 x 19)。有什么办法可以增加这张图片的可见度,让黑白框看起来更清晰?

【问题讨论】:

标签: python matrix adjacency-matrix


【解决方案1】:

在这种情况下,我建议将opencvnumpy 结合使用。 创建二维numpy.arraydtype='uint8'0 用于黑色,255 用于白色。例如,要获得左上白色、右下白色、左下黑色和右上黑色的 2x2 数组,您可以使用代码:

myarray = numpy.array([[255,0],[0,255]],dtype='uint8')

然后你可以用 opencv2 以这种方式将该数组保存为图像:

cv2.imwrite('image.bmp',myarray)

其中数组的每个单元格都由单个像素表示,但是如果您想放大(例如每个单元格都由 5x5 正方形表示),那么您可以使用numpy.kron 函数,如下一行:

myarray = numpy.kron(myarray, numpy.ones((5,5)))

写图片之前

【讨论】:

    【解决方案2】:

    也许你可以试试这个!

    import matplotlib.cm as cm 
    # Display matrix
    plt.imshow(np.random.choice([0, 1], size=100).reshape((10, 10)),cmap=cm.binary)
    

    【讨论】:

      【解决方案3】:

      使用 Seaborn 热图:

      import seaborn as sns
      np.random.seed(3)
      sns.set()
      data = np.random.choice([0, 1], size=(16,16), p=[3./4, 1./4])
      ax = sns.heatmap(data, square=True, xticklabels=False, yticklabels=False, cbar=False, linewidths=.8, linecolor='lightgray', cmap='gray_r')
      

      注意反向颜色映射 gray_r 将黑色表示 1,白色表示 0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多