如何并排绘制函数返回的图形实例



我有图形实例,我想并排绘制它们(例如,一行两列中的两个图形(。下面是返回图实例的示例代码。

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
def build_confusion_matrix_test():
cm = np.array([[379,  49],
[ 18 , 261]])
print(cm)

disp = ConfusionMatrixDisplay(confusion_matrix=cm,
display_labels=[0,1])

title_font = {'size':'13.5'}  # Adjust to fit

disp.plot()
disp.ax_.set_title("title", fontdict = title_font)

return disp.figure_

# Function call
test_plot = build_confusion_matrix_test()
test_plot

我有很多来自不同函数的图形实例,我期待着下面这样的东西,我试图在一行中绘制两次相同的图形,但不确定如何使其工作:

fig = plt.figure()
ax1 = fig.add_subplot(1,1)
test_plot
ax2 = fig.add_subplot(1,2)
test_plot

试试这个:

import itertools
from mpl_toolkits.axes_grid1 import ImageGrid
classes = ["0", "1"]
fig = plt.figure()
grid = ImageGrid(fig, 111,
nrows_ncols=(1,2),
axes_pad=0.15,
cbar_location="right",
cbar_mode="single",
cbar_size="7%",
cbar_pad=0.15,
)

for i, ax in enumerate(grid[:2]):
cm = np.array([[379,  49],
[ 18 , 261]])
im = ax.imshow(cm, vmin=0, vmax=400)
ax.set_title("title {}".format(i))
tick_marks = np.arange(2)

ax.set_xticks(tick_marks)
ax.set_xticklabels(classes, rotation=45)
ax.set_yticks(tick_marks)
ax.set_yticklabels(classes)
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
ax.text(j, i, format(cm[i, j], '.5f'),
horizontalalignment="center",
color="white")
ax.set_ylabel('True label')
ax.set_xlabel('Predicted label')
fig.tight_layout()
fig.subplots_adjust(right=0.8)
fig.colorbar(im, cax=ax.cax)
plt.show()

最新更新