Matplotlib-এ একটি কার্ভে কার্সর যোগ করতে নিচের ধাপগুলো ফলো করতে পারেন:
- ফিগার সাইজ সেট করুন এবং সাবপ্লটের মধ্যে ও চারপাশে প্যাডিং অ্যাডজাস্ট করুন।
- Numpy ব্যবহার করে t এবং s ডেটা পয়েন্ট তৈরি করুন।
- একটি ফিগার এবং সাবপ্লটের সেট তৈরি করুন।
- কার্সর ক্লাস ইনস্ট্যান্স পান, প্লটে কার্সর পয়েন্ট আপডেট করতে।
- mouse_event-এ, মাউসের কারেন্ট পজিশনের x এবং y ডেটা পান।
- x এবং y ডেটা পয়েন্টের ইনডেক্স পান।
- x এবং y পজিশন সেট করুন।
- টেক্সট পজিশন সেট করুন এবং agg বাফার ও মাউস ইভেন্ট রিড্র করুন।
- plot() মেথড ব্যবহার করে t এবং s ডেটা পয়েন্ট প্লট করুন।
- কিছু অ্যাক্সিস প্রপার্টি সেট করুন।
- ফিগার প্রদর্শন করতে show() মেথড ব্যবহার করুন।
উদাহরণ
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()
আউটপুট

