使用matplotlib库中的BrokenBarHCollection对象可以在子图上创建悬停注释,具体步骤如下:
import matplotlib.pyplot as plt
from matplotlib.collections import BrokenBarHCollection
fig, ax = plt.subplots()
bars = [(1, 2), (3, 4), (6, 3)] # 示例数据,表示三个矩形的起始和结束位置
collection = BrokenBarHCollection(bars, (0, 1), facecolors='blue', alpha=0.6)
# bars为矩形的起始和结束位置,(0, 1)表示矩形的高度范围,facecolors为矩形的颜色,alpha为透明度
ax.add_collection(collection)
ax.set_xlim(0, 10) # 设置x轴范围
ax.set_ylim(0, 1) # 设置y轴范围
# 创建悬停注释
annot = ax.annotate("", xy=(0, 0), xytext=(20, 20),
textcoords="offset points",
bbox=dict(boxstyle="round", fc="w"),
arrowprops=dict(arrowstyle="->"))
annot.set_visible(False) # 初始隐藏注释
# 定义悬停事件处理函数
def hover(event):
vis = annot.get_visible()
if event.inaxes == ax:
for rect in collection.get_segments():
if rect[0][0] <= event.xdata <= rect[1][0]:
annot.set_visible(True)
annot.set_text(f"Value: {rect[0][0]} - {rect[1][0]}") # 设置注释内容
annot.xy = (event.xdata, rect[0][1])
fig.canvas.draw_idle()
return
if vis:
annot.set_visible(False)
fig.canvas.draw_idle()
# 绑定悬停事件处理函数
fig.canvas.mpl_connect("motion_notify_event", hover)
# 显示图形
plt.show()
以上代码实现了使用matplotlib的BrokenBarHCollection对象在子图上创建悬停注释的功能。每个矩形代表一段区间,当鼠标悬停在某个矩形区域上时,会显示该区间的数值信息。可根据实际需求修改数据、样式和注释内容。
腾讯云相关产品介绍链接:
领取专属 10元无门槛券
手把手带您无忧上云