如何更改x:和y:在python中使用mplcursor时

r1zhe5dt  于 2023-02-18  发布在  Python
关注(0)|答案(1)|浏览(115)

使用下面这样的简单代码,我得到的游标注解是“x:〈〉,y:〈〉”我如何更改代码,以便看到:x轴:〈〉,y轴:〈〉
如果我有多个子情节,了解如何执行此操作也会有所帮助... enter image description here

import matplotlib.pyplot as plt
import numpy as np
import mplcursors

data = np.outer(range(10), range(1, 5))

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.set_title("Click somewhere on a line.\nRight-click to deselect.\n"
         "Annotations can be dragged.")

mplcursors.cursor(lines)  # or just mplcursors.cursor()
plt.xlabel('xaxis')
plt.ylabel('ylabel')
plt.show()
5t7ly7z5

5t7ly7z51#

你可以通过添加一个在注解激活时调用的函数来改变注解。这样的函数可以是lambda形式(“匿名函数”),也可以是Python中单独编写的函数。当使用子图时,可以在每个子图上添加一个光标。
您可以查看一下examples in the official documentation,以获得可能性的概述。

import matplotlib.pyplot as plt
import numpy as np
import mplcursors

def annotation_function(sel):
    ax = sel.artist.axes
    sel.annotation.set_text(
        f'{ax.get_xlabel()}: {sel.target[0]:.2f}\n{ax.get_ylabel()}: {sel.target[1]:.2f}')

fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(15, 10))
for i, ax_row in enumerate(axs):
    for j, ax in enumerate(ax_row):
        data = np.random.normal(0.1, 100, size=(50, 5)).cumsum(axis=0)
        lines = ax.plot(data)
        ax.set_title(f'Subplot <{i},{j}>')
        ax.set_xlabel('x_' + ''.join(np.random.choice([*'ABCDEF'], np.random.randint(3, 8))))
        ax.set_ylabel('y_' + ''.join(np.random.choice([*'ABCDEF'], np.random.randint(3, 8))))

        cursor = mplcursors.cursor(lines)
        cursor.connect('add', annotation_function)
plt.tight_layout()
plt.show()

相关问题