Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để thêm con trỏ vào một đường cong trong Matplotlib?

Để thêm con trỏ vào một đường cong trong Matplotlib, chúng ta có thể thực hiện các bước sau -

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ.
  • Tạo t s điểm dữ liệu bằng cách sử dụng numpy.
  • Tạo một hình và một tập hợp các tình huống phụ.
  • Nhận cá thể lớp con trỏ, để cập nhật các điểm con trỏ trên biểu đồ.
  • Trong mouse_event, lấy dữ liệu x và y về vị trí hiện tại của chuột.
    • Nhận các chỉ số của điểm dữ liệu x và y.
    • Đặt vị trí x và y.
    • Đặt vị trí văn bản và vẽ lại bộ đệm tổng hợp và sự kiện chuột.
  • t s điểm dữ liệu bằng cách sử dụng plot () phương pháp.
  • Đặt một số thuộc tính trục.
  • Để hiển thị hình này, hãy sử dụng show () phương pháp.

Ví dụ

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

class CursorClass(object):
    def __init__(self, ax, x, y):
        self.ax = ax
        self.ly = ax.axvline(color='yellow', alpha=0.5)
        self.marker, = ax.plot([0], [0], marker="o", color="red", zorder=3)
        self.x = x
        self.y = y
        self.txt = ax.text(0.7, 0.9, '')

def mouse_event(self, event):
    if event.inaxes:
        x, y = event.xdata, event.ydata
        indx = np.searchsorted(self.x, [x])[0]
        x = self.x[indx]
        y = self.y[indx]
        self.ly.set_xdata(x)
        self.marker.set_data([x], [y])
        self.txt.set_text('x=%1.2f, y=%1.2f' % (x, y))
        self.txt.set_position((x, y))
        self.ax.figure.canvas.draw_idle()
     else:
        return

t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2 * 2 * np.pi * t)

fig, ax = plt.subplots()

cursor = CursorClass(ax, t, s)
cid = plt.connect('motion_notify_event', cursor.mouse_event)

ax.plot(t, s, lw=2, color='green')
plt.axis([0, 1, -1, 1])

plt.show()

Đầu ra

Làm cách nào để thêm con trỏ vào một đường cong trong Matplotlib? Làm cách nào để thêm con trỏ vào một đường cong trong Matplotlib?