web-dev-qa-db-ja.com

Matplotlibでテーブルのみをプロットするにはどうすればよいですか?

Matplotlibでテーブルのみを描くことは可能ですか?行のコメントを外した場合

plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])

この例の code 、プロットはまだ表示されています。 (PyQt)ウィンドウの上に、プロットの下に(間にスペースを空けて)テーブルを置きたいです。

18
snowflake

example を変更して、テーブルを一番上に配置したい場合は、loc='top'テーブル宣言の必要なもの、

the_table = ax.table(cellText=cell_text,
                      rowLabels=rows,
                      rowColours=colors,
                      colLabels=columns,
                      loc='top')

次に、プロットを調整し、

plt.subplots_adjust(left=0.2, top=0.8)

より柔軟なオプションは、サブプロットを使用してテーブルを独自の軸に配置することです。

import numpy as np
import matplotlib.pyplot as plt


fig, axs =plt.subplots(2,1)
clust_data = np.random.random((10,3))
collabel=("col 1", "col 2", "col 3")
axs[0].axis('tight')
axs[0].axis('off')
the_table = axs[0].table(cellText=clust_data,colLabels=collabel,loc='center')

axs[1].plot(clust_data[:,0],clust_data[:,1])
plt.show()

このように見えます

enter image description here

次に、軸の位置を 必須 として自由に調整します。

22
Ed Smith

これは、pandasデータフレームをmatplotlibテーブルに直接書き込む別のオプションです。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

# hide axes
fig.patch.set_visible(False)
ax.axis('off')
ax.axis('tight')

df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))

ax.table(cellText=df.values, colLabels=df.columns, loc='center')

fig.tight_layout()

plt.show()

enter image description here

18
Cord Kaldemeyer

これが既に回答されているかどうかはわかりませんが、Figureウィンドウにテーブルのみが必要な場合は、軸を非表示にできます。

fig, ax = plt.subplots()

# Hide axes
ax.xaxis.set_visible(False) 
ax.yaxis.set_visible(False)

# Table from Ed Smith answer
clust_data = np.random.random((10,3))
collabel=("col 1", "col 2", "col 3")
ax.table(cellText=clust_data,colLabels=collabel,loc='center')
6

あなたはこれを行うことができます:

#axs[1].plot(clust_data[:,0],clust_data[:,1]) # Remove this if you don't need it
axs[1].axis("off")  # This will leave the table alone in the window 
2
Apostolos