Python 在Matplotlib中的记号标签周围绘制框
我有一个Matplotlib图,其中包含多个子图: 我想在其中一个标签周围画一个红色小框,如下所示: 如何在Matplotlib中(可靠且可重复地)执行此操作?最简单的情况:静态绘图 对于静态绘图,它很简单:Python 在Matplotlib中的记号标签周围绘制框,python,matplotlib,plot,Python,Matplotlib,Plot,我有一个Matplotlib图,其中包含多个子图: 我想在其中一个标签周围画一个红色小框,如下所示: 如何在Matplotlib中(可靠且可重复地)执行此操作?最简单的情况:静态绘图 对于静态绘图,它很简单: import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.axis([0, 2000, 0, 2e-9]) label = ax.xaxis.get_ticklabels()[-1] label.set_bbox(dic
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.axis([0, 2000, 0, 2e-9])
label = ax.xaxis.get_ticklabels()[-1]
label.set_bbox(dict(facecolor='none', edgecolor='red'))
plt.show()
(请注意,如果要更改填充、圆角、形状等,可以通过多种方式配置标签周围的框。有一些示例。请参阅bbox
和boxstyle
示例。)
跟上交互式变化 但是,如果我们以交互方式缩放或平移,带有红色边框的刻度标签不一定是2000。(相反,它将基于索引。) 平移: 缩放: 要完全重复地执行此操作,以便无论如何交互缩放和填充,它都将保持在那里,您需要将回调连接到draw事件
使用注释而不是标签 然而,无论如何,有一种更简单的方法可能更适合您的目的 与其将其作为记号标签,不如使用注释来绘制。这样,无论标记是如何绘制的,标签都将始终处于指定的值 作为一个非常粗俗的例子(通常,您可能会将文本标签放在下面一点…): 无论我们如何缩放或平移,它在x轴上都将保持在2000(尽管它不能保证在2000时会有刻度或刻度标签): 不过,更常见的情况是,您可以使用它来放置或注释某些特定的值。例如:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.axis([0, 2000, 0, 2e-9])
ax.annotate('Cutoff', xy=(2000, 0), xytext=(0, -15 - ax.xaxis.labelpad),
xycoords=('data', 'axes fraction'), textcoords='offset points',
ha='center', va='top',
bbox=dict(boxstyle='round', fc='none', ec='red'))
plt.show()
请注意,无论我们如何缩放或平移,这也将保持在x轴上的a位置2000,并且无论标签是否在那里,它都将在那里
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.axis([0, 2000, 0, 2e-9])
ax.annotate('Cutoff', xy=(2000, 0), xytext=(0, -15 - ax.xaxis.labelpad),
xycoords=('data', 'axes fraction'), textcoords='offset points',
ha='center', va='top',
bbox=dict(boxstyle='round', fc='none', ec='red'))
plt.show()