Python 如何使用matplotlib将图像添加到所有现有图层的顶层曲面

Python 如何使用matplotlib将图像添加到所有现有图层的顶层曲面,python,matplotlib,Python,Matplotlib,我试图添加一个标志到当前的情节,其中已经有现有的情节元素。我在plot_pic()函数中定义了一个背景。然后绘制它,我想在顶面添加一个徽标。我试着把zorder=10,但它不起作用。Jupyter笔记本中的代码为: import matplotlib.pyplot as plt import matplotlib.image as mpimg from matplotlib.offsetbox import OffsetImage %matplotlib inline from matplo

我试图添加一个标志到当前的情节,其中已经有现有的情节元素。我在plot_pic()函数中定义了一个背景。然后绘制它,我想在顶面添加一个徽标。我试着把zorder=10,但它不起作用。Jupyter笔记本中的代码为:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib.offsetbox import  OffsetImage
%matplotlib inline

from matplotlib.patches import Circle, Rectangle, Arc, Ellipse


def plot_pic(ax=None, color='black', lw=2, scale = 15):
    # get the current ax if ax is None
    if ax is None:
        ax = plt.gca()


    big_box =  Rectangle((-34 * scale, 0), width = 68 * scale, height = 105 / 2 * scale, linewidth=lw, color=color, fill=False)

    middle_box =  Rectangle((-(7.32 * scale / 2+ 5.5 * scale +11 * scale),0), width = (5.5 * scale * 2 + 11 * scale * 2 + 7.32 * scale), height = 16.5 * scale, linewidth = lw, color = color, fc = "white")

    small_box = Rectangle((-(7.32 * scale/ 2 + 5.5 * scale), 0), width = 7.32 * scale + 5.5 * scale * 2, height = 5.5 * scale, linewidth = lw, color = color, fill = False)

    arc = Circle((0, 11 * scale), radius = 9.15 * scale, color = color, lw = lw, fill = False, zorder = 0)

    # List of elements to be plotted
    pic_elements = [big_box, middle_box, small_box, arc]


    # Add the elements onto the axes
    for element in pic_elements:
        ax.add_patch(element)

    return ax

fig = plt.figure()
fig = plt.figure(figsize=(10, 10))
ax = plt.subplot()
logo=mpimg.imread('rbl_logo.png')
# You have to add your own logo, this is in my own folder
addLogo = OffsetImage(logo, zoom=0.6, zorder = 10)
addLogo.set_offset((200,-10)) # pass the position in a tuple
ax.add_artist(addLogo)
plt.xlim(-600,600)
plt.ylim(-100,1000)
plot_pic()
结果是,plot_pic()层覆盖了我想要显示的部分徽标,我只想将徽标放置在覆盖下面所有元素的最上面


有没有办法这样做?非常感谢。

问题是,使用关键字参数设置zorder会在OffsetBox中设置图像的zorder,这不会产生任何效果。要设置框本身的zorder,需要在外部设置:

addLogo = OffsetImage(logo, zoom=0.6)
addLogo.set_zorder(10)

首先绘制徽标,然后调用函数
plot\u pic
,该函数使
plot\u pic
中的绘图与徽标重叠。反过来试试。我也会试试这个解决方案,尽管重要的是芬格内斯特的答案实际上完美地解决了这个问题!谢谢只需试着将最后一行
plot\u pic()
放在
logo=mpimg.imread('rbl\u logo.png')之前