Python 如何使用matplotlib将图像添加到所有现有图层的顶层曲面
我试图添加一个标志到当前的情节,其中已经有现有的情节元素。我在plot_pic()函数中定义了一个背景。然后绘制它,我想在顶面添加一个徽标。我试着把zorder=10,但它不起作用。Jupyter笔记本中的代码为: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
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')之前