pyplot 轴标题不显示
pyplot axes title not showing
我编写了这段代码来检查 object 边界框,但是当我将 title
赋给 axes
时,它没有显示。 (我打算给文件编号作为标题)。
#!/home/ckim/anaconda2/bin/python
#%pylab
import os.path as osp
import sys
import cv2
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def add_path(path):
if path not in sys.path:
sys.path.insert(0, path)
def move_figure(f, x, y):
backend = matplotlib.get_backend()
f.canvas.manager.window.move(x,y)
plt.show()
# Add lib to PYTHONPATH
lib_path = osp.join('/home/ckim/Neuro/py-faster-rcnn/', 'lib')
add_path(lib_path)
import datasets
import datasets.pascal_voc as pv
#plt.ion()
fig, ax = plt.subplots(figsize=(8,8))
im = cv2.imread(osp.join('/home/ckim/Neuro/py-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages/', '{0:06d}'.format(eval(sys.argv[1])) + '.jpg'))
#im = cv2.imread(osp.join('000005.jpg'))
im = im[:, :, (2, 1, 0)]
ax.imshow(im, aspect='equal')
#res = pv._load_pascal_annotation(sys.argv[1])
d = datasets.pascal_voc('trainval', '2007')
res = d._load_pascal_annotation('{0:06d}'.format(eval(sys.argv[1])))
# return {'boxes' : boxes,
# 'gt_classes': gt_classes,
# 'gt_overlaps' : overlaps,
# 'flipped' : False}
for i in range(len(res['boxes'])):
x1 = res['boxes'][i][0]
y1 = res['boxes'][i][1]
x2 = res['boxes'][i][2]
y2 = res['boxes'][i][3]
ax.add_patch(patches.Rectangle((x1,y1), x2-x1, y2-y1, fill=False, edgecolor='red', linewidth=1.5))
ax.text(x1, y1 - 5, '{:s}'.format(d._classes[res['gt_classes'][i]]), \
bbox=dict(facecolor='blue', alpha=0.5), fontsize=14, color='white')
#thismanager = get_current_fig_manager()
#thismanager.window.SetPosition((500, 0))
#thismanager.window.wm_geometry("+500+0")
move_figure(fig, 500, 500)
#fig.show()
#fig.suptitle("Title x")
ax.set_title("Title x")
plt.pause(0)
为了测试问题所在,我将代码缩减为以下内容,但这个简化版本适用于图形绘图(案例 1)和图像显示(案例 2)。我找不到与上面代码的区别。谁能告诉我上面的代码出了什么问题? (关于现在显示的标题)
#!/home/ckim/anaconda2/bin/python
import cv2
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,8))
# case 1 : plot
#ax.plot([1,2,3,4],[1,4,9,16])
# case 2 : image display
im = cv2.imread('000005.jpg')
im = im[:, :, (2, 1, 0)]
ax.imshow(im, aspect='equal')
ax.set_title("Title x")
plt.pause(0)
在move_figure
中调用了plt.show()
,表示如图。由于这是 blocking command,因此在您关闭此图之前不会有更多代码 运行。因此,直到图形消失后才设置标题。如果你交换你第一个代码的最后几行,
ax.set_title("Title x")
move_figure(fig, 500, 500)
plt.pause(0)
标题应该会出现。或者,我建议从 move_figure
中删除 plt.show
以便您可以在需要时显示或稍后显示 savefig
等。
我编写了这段代码来检查 object 边界框,但是当我将 title
赋给 axes
时,它没有显示。 (我打算给文件编号作为标题)。
#!/home/ckim/anaconda2/bin/python
#%pylab
import os.path as osp
import sys
import cv2
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def add_path(path):
if path not in sys.path:
sys.path.insert(0, path)
def move_figure(f, x, y):
backend = matplotlib.get_backend()
f.canvas.manager.window.move(x,y)
plt.show()
# Add lib to PYTHONPATH
lib_path = osp.join('/home/ckim/Neuro/py-faster-rcnn/', 'lib')
add_path(lib_path)
import datasets
import datasets.pascal_voc as pv
#plt.ion()
fig, ax = plt.subplots(figsize=(8,8))
im = cv2.imread(osp.join('/home/ckim/Neuro/py-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages/', '{0:06d}'.format(eval(sys.argv[1])) + '.jpg'))
#im = cv2.imread(osp.join('000005.jpg'))
im = im[:, :, (2, 1, 0)]
ax.imshow(im, aspect='equal')
#res = pv._load_pascal_annotation(sys.argv[1])
d = datasets.pascal_voc('trainval', '2007')
res = d._load_pascal_annotation('{0:06d}'.format(eval(sys.argv[1])))
# return {'boxes' : boxes,
# 'gt_classes': gt_classes,
# 'gt_overlaps' : overlaps,
# 'flipped' : False}
for i in range(len(res['boxes'])):
x1 = res['boxes'][i][0]
y1 = res['boxes'][i][1]
x2 = res['boxes'][i][2]
y2 = res['boxes'][i][3]
ax.add_patch(patches.Rectangle((x1,y1), x2-x1, y2-y1, fill=False, edgecolor='red', linewidth=1.5))
ax.text(x1, y1 - 5, '{:s}'.format(d._classes[res['gt_classes'][i]]), \
bbox=dict(facecolor='blue', alpha=0.5), fontsize=14, color='white')
#thismanager = get_current_fig_manager()
#thismanager.window.SetPosition((500, 0))
#thismanager.window.wm_geometry("+500+0")
move_figure(fig, 500, 500)
#fig.show()
#fig.suptitle("Title x")
ax.set_title("Title x")
plt.pause(0)
#!/home/ckim/anaconda2/bin/python
import cv2
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,8))
# case 1 : plot
#ax.plot([1,2,3,4],[1,4,9,16])
# case 2 : image display
im = cv2.imread('000005.jpg')
im = im[:, :, (2, 1, 0)]
ax.imshow(im, aspect='equal')
ax.set_title("Title x")
plt.pause(0)
在move_figure
中调用了plt.show()
,表示如图。由于这是 blocking command,因此在您关闭此图之前不会有更多代码 运行。因此,直到图形消失后才设置标题。如果你交换你第一个代码的最后几行,
ax.set_title("Title x")
move_figure(fig, 500, 500)
plt.pause(0)
标题应该会出现。或者,我建议从 move_figure
中删除 plt.show
以便您可以在需要时显示或稍后显示 savefig
等。