Como plotar uma tupla com caractere

Eu tenho 2 tuple como abaixo:

L1 = [(10955, 'A'), (10954, 'A'), (10953, 'A'), (10952, 'AB'), (10951, 'AB'), (10950, 'AB'), (10949, 'AB'), (10948, 'ABC')] L2 = [(10956, 'AB'), (10955, 'AB'), (10954, 'A'), (10953, 'ABC'), (10952, 'DEF'), (10951, 'ABC'), (10950, 'AB'), (10949, 'ABC'), (10948, 'ABC'), (10947, 'ABCD')] 

Eu quero plotá-los no matpltlib como abaixo:

 10956 | | AB 10955 | A | AB 10954 | A | A 10953 | A | ABC 10952 | AB | DEF 10951 | AB | ABC 10950 | AB | AB 10949 | AB | ABC 10948 | ABC | ABC 10947 | ABCD| ------------------- | L1 | L2 

Como plotar arquivos char em matplotlib.

Eu posso sugerir olhar nos pandas . Você pode obter uma boa tabela de seus dados criando dois frameworks de dados separados primeiro e depois concatená-los no mesmo índice.

 import pandas as pd L1 = [(10955, 'A'), (10954, 'A'), (10953, 'A'), (10952, 'AB'), (10951, 'AB'), (10950, 'AB'), (10949, 'AB'), (10948, 'ABC')] L2 = [(10956, 'AB'), (10955, 'AB'), (10954, 'A'), (10953, 'ABC'), (10952, 'DEF'), (10951, 'ABC'), (10950, 'AB'), (10949, 'ABC'), (10948, 'ABC'), (10947, 'ABCD')] s1 = pd.DataFrame(L1, columns=["index", "L1"]).set_index("index") s2 = pd.DataFrame(L2, columns=["index", "L2"]).set_index("index") df = pd.concat((s1, s2), join="outer", axis=1).fillna("") print(df) 

Isso resultará em

  L1 L2 index 10947 ABCD 10948 ABC ABC 10949 AB ABC 10950 AB AB 10951 AB ABC 10952 AB DEF 10953 A ABC 10954 AA 10955 A AB 10956 AB 

no console.

Você também pode salvar a tabela em html e abri-la em um navegador

 df.to_html('out.html') import webbrowser, os webbrowser.open('file://' + os.path.realpath("out.html")) 

insira a descrição da imagem aqui

Se estiver usando o jupyter, a saída padrão do dataframe do pandas parece muito boa por si só.

insira a descrição da imagem aqui

Usando o matplotlib (porque a pergunta pede por ele) é possível plotar os valores de um dataframe dentro de um eixo, como este

 import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() for ind, data in np.ndenumerate(df.values): ax.annotate(data, xy=ind[::-1]) ax.set(xticks=range(len(df.columns)), yticks =range(len(df)), xticklabels=df.columns, yticklabels=df.index) ax.set(xlim=(-1, len(df.columns)+1), ylim=(-1, len(df)), aspect=.6) plt.show() 

insira a descrição da imagem aqui

Além disso, o matplotlib fornece tabelas

 import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.table(cellText=df.values, rowLabels=df.index, colLabels=df.columns, loc='center') ax.axis("off") plt.show() 

insira a descrição da imagem aqui