答案 0 :(得分:3)
对于静态情节,它很简单:
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()
(请注意,如果要更改填充,圆角,形状等,可以通过多种方式配置标签周围的框。annotation guide有一些示例。请查看bbox
和boxstyle
例子。)
但是,如果我们以交互方式缩放或平移,带红色边框的刻度标签不一定是2000.(相反,它将基于索引。)
要完全重复这样做,无论您如何以交互方式缩放和填充,它都会保持在那里,您需要将回调连接到绘图事件。
然而,无论如何,这种方式更适合您的目的。
不是将其设为刻度标签,而是使用注释来绘制它。这样,无论刻度如何绘制,您都将始终拥有指定值的标签。
作为一个非常黑客的例子(通常,你可能会在下面放一个文字标签......):
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.axis([0, 2000, 0, 2e-9])
ax.annotate('_____', xy=(2000, 0), xytext=(0, -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轴上保持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轴上的2000位置,并且无论是否存在ticklabel,它都将存在。