Saya ingin menambahkan tabel di sebelah kanan dua subplot menggunakan matplotlib. Saya mencoba kode berikut tetapi menyelaraskan tabel dengan hanya satu subplot ...

import matplotlib.pyplot as plt
import numpy as np

t = np.linspace(-1,1,100)

fig, axs = plt.subplots(2, 1, constrained_layout=True)
ax1, ax2 = axs

ax1.plot(t, t**2)
ax1.set_title('One plot')
ax1.set_xlabel('Time')
ax1.set_ylabel('Amplitude')
ax1.legend()

ax2.plot(t, t**3)
ax2.set_title('Another plot')
ax2.set_xlabel('Time')
ax2.set_ylabel('Amplitude')

clust_data = np.random.random((10,3))
collabel=("col 1", "col 2", "col 3")
the_table = plt.table(cellText=clust_data,
                      colLabels=collabel,
                      loc='right')

Saya juga mencoba menggunakan Gridspec tetapi tidak berhasil. Terima kasih atas bantuan Anda!

2
Adam Siegel 20 Mei 2020, 13:27

1 menjawab

Jawaban Terbaik

Saya menemukan solusi solusi ini menggunakan plt.subplot. Ide untuk merentangkannya secara vertikal diambil dari di sini dan untuk mengubah ukuran font dari di sini. Anda dapat memilih nilai penskalaan y, yaitu 1,65 pada kode di bawah ini, sesuai kebutuhan Anda.

ax1 = plt.subplot(221)
ax1.plot(t, t**2)
ax1.set_title('One plot')
ax1.set_xlabel('Time')
ax1.set_ylabel('Amplitude')

ax2 = plt.subplot(223)
ax2.plot(t, t**3)
ax2.set_title('Another plot')
ax2.set_xlabel('Time')
ax2.set_ylabel('Amplitude')

ax3 = plt.subplot(122)
clust_data = np.random.random((10,3))
collabel=("col 1", "col 2", "col 3")
the_table = ax3.table(cellText=clust_data,
                      colLabels=collabel,
                      loc='center')
the_table.scale(1,1.65)
the_table.auto_set_font_size(False)
the_table.set_fontsize(4)
ax3.axis('off')
plt.tight_layout()

enter image description here

1
Sheldore 20 Mei 2020, 10:53