matplotlib绘制鼠标的十字光标(内置方式)

相对于echarts等基于JavaScript的图表库,matplotlib的交互能力相对较差。
在实际应用中,我们经常想使用十字光标来定位数据坐标,matplotlib内置提供支持。

官方示例

matplotlib提供了官方示例https://matplotlib.org/gallery/widgets/cursor.html

from matplotlib.widgets import Cursor
import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, facecolor='#FFFFCC')

x, y = 4*(np.random.rand(2, 100) - .5)
ax.plot(x, y, 'o')
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

# Set useblit=True on most backends for enhanced performance.
cursor = Cursor(ax, useblit=True, color='red', linewidth=2)

plt.show()

当然可以!在 Matplotlib 图表中,你可以启用**十字光标(Crosshair Cursor)**功能,使得当鼠标移动到图表上时,会显示一条垂直和水平的辅助线(即十字光标),帮助你更精确地查看某一点的数据值。 我们可以通过使用 `matplotlib.widgets` 模块中的 `Cursor` 类来实现这个功能。 --- ### ✅ 修改后的完整代码如下(添加了十字光标) ```python import pandas as pd import matplotlib.pyplot as plt from matplotlib.widgets import Cursor # 数据路径 file_path = r'D:\ZTAPIDATA\database\300595_SZ\d_data.csv' # 使用 pandas 读取CSV文件(注意第一行是列头) df = pd.read_csv(file_path) # 将 't' 列转换为 datetime 类型 df['t'] = pd.to_datetime(df['t']) # 绘图设置 fig, ax = plt.subplots(figsize=(14, 8)) # 绘制四条价格曲线 ax.plot(df['t'], df['h'], label='High Price', color='red') ax.plot(df['t'], df['l'], label='Low Price', color='blue') ax.plot(df['t'], df['o'], label='Open Price', color='green') ax.plot(df['t'], df['c'], label='Close Price', color='orange') # 设置图表标题和坐标轴标签 ax.set_title('SZ#300595 Daily Price Trends', fontsize=16) ax.set_xlabel('Date', fontsize=12) ax.set_ylabel('Price (CNY)', fontsize=12) # 显示图例 ax.legend() # 自动调整日期显示格式以避免重叠 fig.autofmt_xdate() # 布局优化 plt.tight_layout() # 添加十字光标 cursor = Cursor(ax, useblit=True, color='gray', linewidth=1.2, linestyle='--') # 显示图表 plt.show() ``` --- ### 🔍 功能说明: - **Cursor 类**: - `useblit=True`:使用双缓冲技术,提高交互性能。 - `color='gray'`:设置十字线颜色为灰色。 - `linewidth=1.2`:设置线宽。 - `linestyle='--'`:设置为虚线样式。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值