আপনার ডেটা থেকে গভীর অন্তর্দৃষ্টি পেতে ম্যাটপ্লটলিবি এবং উইজেটগুলির সাথে ইন্টারেক্টিভ প্লট তৈরি করার উপায়গুলি অন্বেষণ করুন। ডায়নামিক অনুসন্ধানের জন্য স্লাইডার, বোতাম এবং ড্রপডাউনগুলির সাথে আপনার ভিজ্যুয়ালাইজেশনগুলি উন্নত করুন।
ইন্টারেক্টিভ ডেটা ভিজ্যুয়ালাইজেশন: ডায়নামিক ইনসাইটের জন্য ম্যাটপ্লটলিবি উইজেট ইন্টিগ্রেশন
ডেটা ভিজ্যুয়ালাইজেশন ডেটা বিজ্ঞান এবং বিশ্লেষণের একটি গুরুত্বপূর্ণ উপাদান। যেখানে স্ট্যাটিক প্লট মূল্যবান অন্তর্দৃষ্টি প্রদান করে, সেখানে ইন্টারেক্টিভ প্লট ব্যবহারকারীদের ডেটা ডায়নামিকভাবে অন্বেষণ করতে, লুকানো নিদর্শনগুলি উন্মোচন করতে এবং জটিল সম্পর্কগুলির গভীরতর উপলব্ধি অর্জন করতে সক্ষম করে। ম্যাটপ্লটলিবি, ভিজ্যুয়ালাইজেশন তৈরি করার জন্য ব্যাপকভাবে ব্যবহৃত একটি পাইথন লাইব্রেরি, উইজেটগুলিকে একত্রিত করার শক্তিশালী ক্ষমতা প্রদান করে, যা আপনাকে ব্যবহারকারীর ইনপুটের প্রতিক্রিয়া জানায় এমন ইন্টারেক্টিভ প্লট তৈরি করতে সক্ষম করে।
ম্যাটপ্লটলিবি উইজেট বোঝা
ম্যাটপ্লটলিবি উইজেটগুলি হল গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) উপাদান যা ম্যাটপ্লটলিবি চিত্রের মধ্যে এম্বেড করা যেতে পারে। এই উইজেটগুলি ব্যবহারকারীদের রিয়েল-টাইমে প্লটটি ম্যানিপুলেট করতে দেয়, যা ডেটা অনুসন্ধানের জন্য একটি ব্যবহারিক পদ্ধতি প্রদান করে। ম্যাটপ্লটলিবি উইজেটের সাধারণ প্রকারগুলির মধ্যে রয়েছে:
- স্লাইডার: ক্রমাগত সংখ্যাসূচক প্যারামিটারগুলি সমন্বয় করুন।
- বোতাম: নির্দিষ্ট ক্রিয়া বা ইভেন্টগুলি ট্রিগার করুন।
- রেডিও বোতাম: একটি তালিকা থেকে একটি বিকল্প নির্বাচন করুন।
- চেক বোতাম: একাধিক বিকল্প চালু বা বন্ধ করুন।
- টেক্সট বক্স: টেক্সট মান ইনপুট করুন।
- ড্রপডাউন (মেনু): একটি ড্রপডাউন তালিকা থেকে একটি বিকল্প নির্বাচন করুন।
এই উইজেটগুলিকে আপনার প্লটের ডেটা বা উপস্থিতির সাথে সংযুক্ত করে, আপনি একটি ডায়নামিক এবং আকর্ষণীয় ব্যবহারকারীর অভিজ্ঞতা তৈরি করতে পারেন।
আপনার পরিবেশ সেট আপ করা হচ্ছে
শুরু করার আগে, নিশ্চিত করুন যে আপনার প্রয়োজনীয় লাইব্রেরিগুলি ইনস্টল করা আছে। আপনার ম্যাটপ্লটলিবি এবং সম্ভবত আইপাইউইজেটস প্রয়োজন হবে যদি আপনি একটি জুপিটার নোটবুক পরিবেশে কাজ করেন। পাইপ ব্যবহার করে সেগুলি ইনস্টল করুন:
pip install matplotlib ipywidgets
জুপিটার নোটবুকে উইজেট ব্যবহার করার জন্য, আপনাকে আইপাইউইজেটস এক্সটেনশনটি সক্ষম করতে হতে পারে:
jupyter nbextension enable --py widgetsnbextension
একটি স্লাইডার সহ একটি সাধারণ ইন্টারেক্টিভ প্লট তৈরি করা
আসুন একটি প্রাথমিক উদাহরণ দিয়ে শুরু করা যাক: একটি সাইন তরঙ্গের একটি প্লট তৈরি করা এবং এর ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে একটি স্লাইডার ব্যবহার করা।
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
# Define the initial frequency
init_freq = 2
# Define the time axis
t = np.linspace(0, 1, 1000)
# Define the sine wave function
s = lambda f, t: np.sin(2 * np.pi * f * t)
# Create the figure and axes objects
fig, ax = plt.subplots()
line, = ax.plot(t, s(init_freq, t), lw=2)
ax.set_xlabel('Time [s]')
# Adjust the subplots parameters to give some space for the sliders and buttons
fig.subplots_adjust(left=0.25, bottom=0.25)
# Create the slider axis
axfreq = fig.add_axes([0.25, 0.1, 0.65, 0.03])
# Create the slider
freq_slider = Slider(
ax=axfreq,
label='Frequency [Hz]',
valmin=0.1,
valmax=30,
valinit=init_freq,
)
# Define the update function
def update(val):
freq = freq_slider.val
line.set_ydata(s(freq, t))
fig.canvas.draw_idle()
# Connect the slider to the update function
freq_slider.on_changed(update)
# Show the plot
plt.show()
এই কোডটি একটি সাইন ওয়েভ প্লট তৈরি করে এবং একটি স্লাইডার যা আপনাকে তরঙ্গের ফ্রিকোয়েন্সি পরিবর্তন করতে দেয়। স্লাইডারের মান পরিবর্তন হওয়ার সাথে সাথে আপডেট ফাংশনটি কল করা হয়, সেই অনুযায়ী প্লট আপডেট করে।
প্লট রিসেট করার জন্য একটি বোতাম যোগ করা
আসুন ফ্রিকোয়েন্সিটিকে তার প্রাথমিক মানতে ফিরিয়ে আনতে একটি বোতাম যোগ করি।
# Create the reset button axis
reset_ax = fig.add_axes([0.8, 0.025, 0.1, 0.04])
# Create the reset button
reset_button = Button(reset_ax, 'Reset', hovercolor='0.975')
# Define the reset function
def reset(event):
freq_slider.reset()
# Connect the button to the reset function
reset_button.on_clicked(reset)
এই কোডটি প্লটে একটি রিসেট বোতাম যোগ করে। ক্লিক করার সময়, এটি স্লাইডারটিকে তার প্রাথমিক মানতে রিসেট করে, কার্যকরভাবে সাইন তরঙ্গের ফ্রিকোয়েন্সি রিসেট করে।
বিচ্ছিন্ন পছন্দের জন্য রেডিও বোতাম ব্যবহার করা
রেডিও বোতামগুলি প্রাক-নির্ধারিত পছন্দগুলির একটি সেট থেকে একটি বিকল্প নির্বাচন করার জন্য উপযোগী। আসুন ওয়েভফর্মের প্রকার (সাইন, কোসাইন বা স্কয়ার) নির্বাচন করতে রেডিও বোতাম যুক্ত করি।
# Create the radio buttons axis
rax = fig.add_axes([0.025, 0.5, 0.15, 0.15])
# Create the radio buttons
radio_buttons = RadioButtons(rax, ('Sine', 'Cosine', 'Square'), active=0)
# Define the waveform functions
def sine(f, t):
return np.sin(2 * np.pi * f * t)
def cosine(f, t):
return np.cos(2 * np.pi * f * t)
def square(f, t):
return np.sign(np.sin(2 * np.pi * f * t))
wave_functions = {
'Sine': sine,
'Cosine': cosine,
'Square': square
}
# Define the function to update the waveform
def update_waveform(label):
wave_function = wave_functions[label]
line.set_ydata(wave_function(freq_slider.val, t))
fig.canvas.draw_idle()
# Connect the radio buttons to the update function
radio_buttons.on_clicked(update_waveform)
এখন, আপনি রেডিও বোতাম ব্যবহার করে বিভিন্ন ওয়েভফর্মের মধ্যে পরিবর্তন করতে পারেন। এটি আপনার প্লটের বিচ্ছিন্ন দিকগুলি নিয়ন্ত্রণ করতে রেডিও বোতামগুলি কীভাবে ব্যবহার করবেন তা প্রদর্শন করে।
একটি ড্রপডাউন মেনু বাস্তবায়ন করা
ড্রপডাউন মেনু (বা অপশন মেনু) বিকল্পগুলির একটি তালিকা থেকে নির্বাচন করার একটি কমপ্যাক্ট উপায় সরবরাহ করে। ধরুন আপনি একটি ড্রপডাউন মেনু ব্যবহার করে আপনার প্লটের লাইনের রঙ নিয়ন্ত্রণ করতে চান।
from matplotlib.widgets import Button, Slider, RadioButtons, CheckButtons, TextBox, Dropdown
#Define axis for the dropdown menu
dropdown_ax = fig.add_axes([0.025, 0.3, 0.15, 0.04])
#Define the dropdown widget
dropdown = Dropdown(
dropdown_ax, 'Line Color',
options=['blue', 'red', 'green'],
color='0.9',
hovercolor='0.7'
)
#Update line color based on dropdown selection
def update_color(label):
line.set_color(label)
fig.canvas.draw_idle()
#Connect dropdown to update function
dropdown.on_changed(update_color)
এটি ব্যবহারকারীদের একটি ড্রপডাউন মেনু থেকে লাইনের রঙ নির্বাচন করতে দেয়, গতিশীলভাবে প্লট আপডেট করে। এটি সীমিত এবং সু-সংজ্ঞায়িত বিকল্পগুলির একটি তালিকা উপস্থাপন করার একটি ভাল উপায়।
একাধিক নির্বাচনের জন্য চেক বোতামগুলির সাথে কাজ করা
চেক বোতামগুলি ব্যবহারকারীদের একাধিক বিকল্প চালু বা বন্ধ করতে দেয়। এটি বিভিন্ন ডেটা সিরিজ বা প্লট উপাদানগুলির দৃশ্যমানতা নিয়ন্ত্রণ করার জন্য উপযোগী। আসুন সাইন, কোসাইন এবং স্কয়ার তরঙ্গগুলির দৃশ্যমানতা একযোগে টগল করতে চেক বোতাম তৈরি করি (যদিও পূর্ববর্তী উদাহরণে, সেগুলি রেডিও বোতাম পছন্দের উপর ভিত্তি করে পারস্পরিকভাবে একচেটিয়া):
#Create axes for check buttons
check_ax = fig.add_axes([0.025, 0.7, 0.15, 0.15])
#Initial visibility states
visibility = [True, False, False] #Sine visible, others not.
#Define check button widget
check = CheckButtons(check_ax, ['Sine', 'Cosine', 'Square'], visibility)
#Update function to toggle lines
def func(label):
index = ['Sine', 'Cosine', 'Square'].index(label)
visibility[index] = not visibility[index] #Toggle the state
#Depending on how your plot is structured, you might need
#to access and modify line objects to control their visibility.
#This example assumes you're working with three lines that were created elsewhere.
if label == 'Sine':
#Show/Hide Sine wave. (You will need to define a sine_line object earlier)
pass #sine_line.set_visible(visibility[0]) #Uncomment when a sine_line object is available
elif label == 'Cosine':
#Show/Hide Cosine wave. (You will need to define a cosine_line object earlier)
pass #cosine_line.set_visible(visibility[1]) #Uncomment when a cosine_line object is available
else:
#Show/Hide Square wave. (You will need to define a square_line object earlier)
pass #square_line.set_visible(visibility[2]) #Uncomment when a square_line object is available
fig.canvas.draw_idle()
#Connect check buttons to update function
check.on_clicked(func)
কাস্টম ইনপুটের জন্য টেক্সট বক্স ব্যবহার করা
টেক্সট বক্সগুলি ব্যবহারকারীদের কাস্টম টেক্সট মান প্রবেশ করতে দেয়। এটি ডেটা ফিল্টার করতে, ফাইলের পথ নির্দিষ্ট করতে বা অন্যান্য টেক্সট-ভিত্তিক ইনপুট সরবরাহ করার জন্য উপযোগী হতে পারে। আসুন একটি টেক্সট বক্স যোগ করি যেখানে একজন ব্যবহারকারী প্লটের শিরোনাম নির্দিষ্ট করতে পারে:
from matplotlib.widgets import TextBox
# Define axis for text box
text_box_ax = fig.add_axes([0.25, 0.025, 0.65, 0.04])
# Define the text box widget
text_box = TextBox(text_box_ax, 'Plot Title: ', initial='Sine Wave Plot')
# Update the title of the plot
def update_title(text):
ax.set_title(text)
fig.canvas.draw_idle()
# Connect text box to update function
text_box.on_submit(update_title)
এখন, ব্যবহারকারী টেক্সট বক্সে একটি কাস্টম শিরোনাম প্রবেশ করতে পারে এবং প্লটের শিরোনাম সেই অনুযায়ী আপডেট হবে। এখানে on_submit ব্যবহার করা হয়েছে, যার অর্থ ব্যবহারকারী টেক্সট বক্সে এন্টার/রিটার্ন চাপার পরে ফাংশনটি কল করা হয়। আপনি ব্যবহারকারী টাইপ করার সাথে সাথে রিয়েল-টাইম আপডেটের জন্য on_text_change ব্যবহার করতে পারেন, তবে এটি জটিল প্লটের সাথে কর্মক্ষমতা প্রভাবিত করতে পারে।
উন্নত কৌশল এবং বিবেচনা
- কর্মক্ষমতা: ইন্টারেক্টিভ প্লটগুলি কম্পিউটেশনালি নিবিড় হতে পারে, বিশেষ করে বৃহৎ ডেটাসেটের সাথে। মসৃণ মিথস্ক্রিয়া নিশ্চিত করতে আপনার কোড অপটিমাইজ করুন। ডেটা ডেসিমিেশন বা মধ্যবর্তী ফলাফল ক্যাশিংয়ের মতো কৌশলগুলি বিবেচনা করুন।
- ইভেন্ট হ্যান্ডলিং: ম্যাটপ্লটলিবি উইজেট পরিবর্তনগুলির বাইরে ব্যবহারকারীর মিথস্ক্রিয়ার প্রতিক্রিয়া জানানোর জন্য বিভিন্ন ইভেন্ট হ্যান্ডলিং প্রক্রিয়া সরবরাহ করে। আপনি অত্যন্ত কাস্টমাইজড ইন্টারেক্টিভ অভিজ্ঞতা তৈরি করতে মাউস ক্লিক, কী প্রেস এবং অন্যান্য ইভেন্টগুলি ক্যাপচার করতে পারেন।
- অন্যান্য লাইব্রেরির সাথে ইন্টিগ্রেশন: ম্যাটপ্লটলিবি উইজেটগুলি শক্তিশালী ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন সরঞ্জাম তৈরি করতে পান্ডাস এবং নাম্পির মতো অন্যান্য লাইব্রেরির সাথে একত্রিত করা যেতে পারে।
- কাস্টম উইজেট: উন্নত ব্যবহারের ক্ষেত্রে, আপনি নির্দিষ্ট কার্যকারিতা বাস্তবায়নের জন্য আপনার নিজস্ব কাস্টম উইজেট তৈরি করতে পারেন।
- মোতায়েন: যদিও উপরের উদাহরণগুলি স্থানীয় ইন্টারেক্টিভ অনুসন্ধানের জন্য উপযুক্ত (যেমন, জুপিটার নোটবুকে), বৃহত্তর অ্যাক্সেসের জন্য ইন্টারেক্টিভ প্লট স্থাপন করার জন্য প্রায়শই বোক বা প্লটলি-এর মতো লাইব্রেরির সাথে একত্রে ফ্ল্যাক্স বা জ্যাঙ্গো-এর মতো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করার প্রয়োজন হয়। এই লাইব্রেরিগুলি ওয়েব-ভিত্তিক ইন্টারেক্টিভ ড্যাশবোর্ড তৈরি করার বৈশিষ্ট্যগুলি অফার করে।
ইন্টারেক্টিভ প্লট ডিজাইন করার সেরা অনুশীলন
- সহজ রাখুন: খুব বেশি নিয়ন্ত্রণের সাথে ব্যবহারকারীদের অভিভূত করা এড়িয়ে চলুন। সবচেয়ে প্রাসঙ্গিক প্যারামিটার এবং মিথস্ক্রিয়াগুলির উপর ফোকাস করুন।
- স্পষ্ট প্রতিক্রিয়া প্রদান করুন: নিশ্চিত করুন যে ব্যবহারকারীর ক্রিয়াকলাপের প্লটে একটি স্পষ্ট এবং তাৎক্ষণিক প্রভাব রয়েছে।
- স্বজ্ঞাত নিয়ন্ত্রণ ব্যবহার করুন: আপনি যে ধরনের ডেটা এবং মিথস্ক্রিয়া সক্ষম করতে চান তার জন্য উপযুক্ত উইজেটগুলি নির্বাচন করুন।
- অ্যাক্সেসযোগ্যতা বিবেচনা করুন: অ্যাক্সেসযোগ্যতা মাথায় রেখে আপনার ইন্টারেক্টিভ প্লটগুলি ডিজাইন করুন, যা নিশ্চিত করে যে সেগুলি প্রতিবন্ধী ব্যক্তিরা ব্যবহার করতে পারে।
- পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন: ব্যবহারযোগ্যতার সমস্যাগুলি সনাক্ত করতে এবং সমাধান করতে বিভিন্ন ব্যবহারকারীর সাথে আপনার ইন্টারেক্টিভ প্লটগুলি পরীক্ষা করুন।
বৈশ্বিক অ্যাপ্লিকেশন এবং উদাহরণ
ইন্টারেক্টিভ প্লটগুলি বিশ্বজুড়ে বিভিন্ন ক্ষেত্রে ব্যবহৃত হয়। এখানে কিছু উদাহরণ দেওয়া হলো:
- আর্থিক বিশ্লেষণ: ব্যবসায়ী এবং বিশ্লেষকরা স্টক মার্কেট ডেটা অন্বেষণ করতে, প্রবণতা বিশ্লেষণ করতে এবং ট্রেডিং সুযোগ সনাক্ত করতে ইন্টারেক্টিভ প্লট ব্যবহার করেন। উদাহরণস্বরূপ, সামঞ্জস্যযোগ্য টাইমফ্রেম সহ ইন্টারেক্টিভ ক্যান্ডেলস্টিক চার্টগুলি ব্যবহারকারীদের নিউ ইয়র্ক স্টক এক্সচেঞ্জ থেকে টোকিও স্টক এক্সচেঞ্জ পর্যন্ত বিশ্বজুড়ে বিভিন্ন বাজারে মূল্য আন্দোলন পরীক্ষা করতে দেয়।
- বৈজ্ঞানিক গবেষণা: গবেষকরা পরীক্ষামূলক ডেটা ভিজ্যুয়ালাইজ করতে, সিমুলেশনগুলি অন্বেষণ করতে এবং জটিল ঘটনাগুলির অন্তর্দৃষ্টি অর্জনের জন্য ইন্টারেক্টিভ প্লট ব্যবহার করেন। জলবায়ু বিজ্ঞানীরা, উদাহরণস্বরূপ, বিশ্বের বিভিন্ন অঞ্চলে তাপমাত্রা পরিবর্তনগুলি ভিজ্যুয়ালাইজ করতে ইন্টারেক্টিভ মানচিত্র ব্যবহার করতে পারেন, যা তাদের নির্দিষ্ট অঞ্চলে জলবায়ু পরিবর্তনের প্রভাব পরীক্ষা করতে দেয়।
- প্রকৌশল: প্রকৌশলীরা ডিজাইন প্যারামিটার বিশ্লেষণ করতে, কর্মক্ষমতা অপটিমাইজ করতে এবং সমস্যা সমাধানে ইন্টারেক্টিভ প্লট ব্যবহার করেন। সিভিল প্রকৌশলীরা বিভিন্ন লোড শর্ত বা পরিবেশগত কারণের অধীনে কাঠামোগত অখণ্ডতা মূল্যায়ন করতে সেতু বা বিল্ডিংগুলির ইন্টারেক্টিভ মডেল ব্যবহার করতে পারে।
- ব্যবসায়িক বুদ্ধিমত্তা: ব্যবসাগুলি মূল পারফরম্যান্স ইন্ডিকেটর (KPI) ট্র্যাক করতে, বিক্রয় প্রবণতা নিরীক্ষণ করতে এবং উন্নতির ক্ষেত্রগুলি সনাক্ত করতে ইন্টারেক্টিভ ড্যাশবোর্ড ব্যবহার করে। একটি বিশ্বব্যাপী খুচরা সংস্থা বিভিন্ন দেশে বিক্রয় কর্মক্ষমতা ট্র্যাক করতে একটি ইন্টারেক্টিভ ড্যাশবোর্ড ব্যবহার করতে পারে, যা তাদের আঞ্চলিক প্রবণতা সনাক্ত করতে এবং সেই অনুযায়ী তাদের বিপণন কৌশল তৈরি করতে দেয়।
- শিক্ষা: ইন্টারেক্টিভ প্লটগুলি শিক্ষার অভিজ্ঞতা বাড়াতে এবং জটিল ধারণাগুলিকে আরও অ্যাক্সেসযোগ্য করতে ব্যবহার করা যেতে পারে। গাণিতিক ফাংশন বা বৈজ্ঞানিক সিমুলেশনগুলির ইন্টারেক্টিভ ভিজ্যুয়ালাইজেশনগুলি শিক্ষার্থীদের অন্তর্নিহিত নীতিগুলির গভীরতর উপলব্ধি তৈরি করতে সহায়তা করতে পারে। উদাহরণস্বরূপ, রোগের বিস্তার প্রদর্শনের ইন্টারেক্টিভ সিমুলেশনগুলি জনসাধারণের স্বাস্থ্য হস্তক্ষেপ সম্পর্কে জনসংখ্যাকে শিক্ষিত করতে ব্যবহৃত হয়।
উপসংহার
ম্যাটপ্লটলিবি উইজেটগুলি ইন্টারেক্টিভ প্লট তৈরি করার একটি শক্তিশালী উপায় সরবরাহ করে যা ব্যবহারকারীদের ডেটা ডায়নামিকভাবে অন্বেষণ করতে এবং গভীরতর অন্তর্দৃষ্টি অর্জনে সহায়তা করে। স্লাইডার, বোতাম, রেডিও বোতাম, চেক বোতাম, টেক্সট বক্স এবং ড্রপডাউন মেনুগুলির মতো উইজেটগুলিকে একত্রিত করে, আপনি আকর্ষণীয় এবং তথ্যপূর্ণ ভিজ্যুয়ালাইজেশন তৈরি করতে পারেন যা ডেটা বিশ্লেষণ এবং যোগাযোগকে উন্নত করে। মৌলিক ধারণাগুলি সহজবোধ্য হলেও, কর্মক্ষমতা অপটিমাইজেশন এবং কাস্টম উইজেট তৈরির মতো উন্নত কৌশল এবং বিবেচনাগুলি আয়ত্ত করা আরও বৃহত্তর সম্ভাবনা আনলক করতে পারে। আপনি যখন ইন্টারেক্টিভ প্লট ডিজাইন করেন, তখন আপনার ভিজ্যুয়ালাইজেশনগুলি একটি বিশ্বব্যাপী শ্রোতাদের জন্য কার্যকর এবং ব্যবহারকারী-বান্ধব তা নিশ্চিত করতে সরলতা, স্বচ্ছতা এবং অ্যাক্সেসযোগ্যতাকে অগ্রাধিকার দিতে মনে রাখবেন।
ইন্টারেক্টিভ ভিজ্যুয়ালাইজেশনগুলি ক্রমাগত বিকশিত হচ্ছে এবং বোক, প্লটলি এবং ড্যাশের মতো সরঞ্জামগুলি ওয়েব-ভিত্তিক ইন্টারেক্টিভ প্লটের জন্য বিকল্প বিকল্প সরবরাহ করে। এই লাইব্রেরিগুলি অন্বেষণ করা নির্দিষ্ট ব্যবহারের ক্ষেত্রে সুবিধা দিতে পারে, বিশেষ করে বৃহত্তর দর্শকদের জন্য ইন্টারেক্টিভ ড্যাশবোর্ড স্থাপন করার সময়।