使用Altair的on_click事件和Pandas的to_csv方法将每次点击tooltip的位置坐标记录到csv文件中。
代码示例:
import pandas as pd
import altair as alt
# 生成散点图
points = alt.Chart(data).mark_point().encode(
x='x:Q',
y='y:Q',
tooltip=['x:Q', 'y:Q']
)
# 定义回调函数
def log_position(event):
# 鼠标点击位置的坐标
x, y = event["x"], event["y"]
# 将坐标记录到DataFrame中
df = pd.DataFrame({'x': [x], 'y': [y]})
# 将DataFrame写入csv文件
df.to_csv('position.csv', mode='a', index=False, header=not os.path.isfile('position.csv'))
# 绑定回调函数到on_click事件
points = points.add_selection(
alt.selection_single(on='click', empty='none', events={'signal': 'event'}))
points = points.properties(title='Click on a point in the scatter plot to log its position')
points = points.add_event_listener('click', log_position)
points
每次点击散点图上的任意一个点,坐标都会被记录到csv文件“position.csv”中。