我正在尝试在jupyter笔记本中创建一个交互式脚本,它将在周期中绘制不同的图像并询问用户的决定。我来到了可以用3个子图重绘图的地步,但是不知道如何配置交互式图的大小以使所有子图可见。正如您所看到的,只有第二个子图的一部分从右侧窥视。
我将不胜感激任何帮助。
这是我的代码:
import cv2
import matplotlib.pyplot as plt
import pandas as pd
% matplotlib notebook
fig, [ax1, ax2, ax3] = plt.subplots(1,3, figsize=(5, 5))
ax1.set_xlabel("src")
ax2.set_xlabel("rgb")
ax3.set_xlabel("hsv")
ax2.set_xlim([-1,257])
ax3.set_xlim([-1,257])
plt.legend(loc='upper right')
color = ('r','g','b') # HSV colors
labels = ('h', 's', 'v')
plt.subplots_adjust(right = 2.3)
for i in range(0,3):
im = cv2.imread("image.png")
im_rgb = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
im_hsv = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
ax1.imshow(im_rgb, cmap='gray')
for i,col in enumerate(color):
histr = cv2.calcHist([im_rgb],[i],None,[256],[0,256])
ax2.plot(histr, color = col, label=col)
for i,col in enumerate(color):
histr = cv2.calcHist([im_hsv],[i],None,[256],[0,256])
ax3.plot(histr, color = col, label=labels[i])
fig.canvas.draw()
answer = input("Next? " )
答案 0 :(得分:0)
subplots_adjust
documentation可能并不明显,但top
和right
的参数需要小于1才能使轴保持在图边界内,因为这些参数是图形边距开始时图形高度和宽度的分数。
如果您提供right=2.3
,则意味着最后一个子图的右边缘以图形宽度的2.3倍结束 - 这很可能是不受欢迎的。
因此请将right
保留在1
以下,并使所有绘图都适合图中,您可能需要调整图形大小,例如figsize=(13,5)
。