簡體   English   中英

Matplotlib數位矩陣同時

[英]Matplotlib several figures matrix at the same time

我正在使用matplotlib python開發代碼,以顯示兩個軸之間的關系,並且我想在第一張圖旁邊的另一張圖中繪制該行的總和。 主要問題是我想在另一個矩陣中進行操作,相對於第一個矩陣的距離最小。 我附上了繪圖解決方案的整個代碼:

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

matr=[[1,0,0],[0,0,1],[1,1,0],[0,0,1]]

def plot_tools(matrix=matr,sigma=[1,2,3,4],m=[1,2,3],name='a'):

    #matrix=matrix with numbers
    #sigma= values for the y axis
    #m=values for the x axis
    #name=name for the image

    W=np.array(matrix)    
    id_matrix=W
    id_labels=m #nombre para el eje x
    fig, ax = plt.subplots()
    cmap = colors.ListedColormap(['lavender','purple'])
    mat = ax.imshow(id_matrix, interpolation='nearest',cmap=cmap)
    plt.suptitle('Plot:')
    plt.yticks(range(id_matrix.shape[0]), sigma) #label for y axis
    plt.xticks(range(id_matrix.shape[1]), id_labels) #label for x axis
    ax.xaxis.tick_top()
    plt.xticks(rotation=0)
    plt.ylabel('Y axis',fontsize=13)
    plt.xlabel('X axis',fontsize=13)

    major_ticks = np.arange(0, len(sigma), 1)


    ax.set_yticks(major_ticks)
    ax.set_yticks(major_ticks, minor=True)
    temp=0
    for x in xrange(id_matrix.shape[0]):
        for y in xrange(id_matrix.shape[1]):
            if id_matrix[x, y]==1:
                temp+=1
                ax.annotate(str(temp), xy=(y, x),horizontalalignment='center', verticalalignment='center')
    plt.savefig('Images/' + str(name) + '.png')
    plt.show()

我想要達到以下結果: 預期結果

一個最簡單的方法是使用次要情節 ,在這兩個數字共享Y軸,你可以看到在這個例子

或多或少像這樣:

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

matr=[[1,0,0],[0,0,1],[1,1,0],[0,0,1]]

def plot_tools(matrix=matr,sigma=[1,2,3,4],m=[1,2,3],name='a'):

    #matrix=matrix with numbers
    #sigma= values for the y axis
    #m=values for the x axis
    #name=name for the image

    W=np.array(matrix)    
    id_matrix=W
    id_labels=m #nombre para el eje x
    f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
    cmap = colors.ListedColormap(['lavender','purple'])
    mat = ax1.imshow(id_matrix, interpolation='nearest',cmap=cmap)
    plt.suptitle('Plot:')
    plt.yticks(range(id_matrix.shape[0]), sigma) #label for y axis
    plt.xticks(range(id_matrix.shape[1]), id_labels) #label for x axis
    ax1.xaxis.tick_top()
    plt.xticks(rotation=0)
    plt.ylabel('Y axis',fontsize=13)
    plt.xlabel('X axis',fontsize=13)

    major_ticks = np.arange(0, len(sigma), 1)

    ax2.set_yticks(major_ticks)
    ax2.set_yticks(major_ticks, minor=True)
    temp=0
    for x in xrange(id_matrix.shape[0]):
        for y in xrange(id_matrix.shape[1]):
            if id_matrix[x, y]==1:
                temp+=1
                ax2.annotate(str(temp), xy=(y, x),horizontalalignment='center', verticalalignment='center')
    #plt.savefig('Images/' + str(name) + '.png')
    plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM