ویژگی تصویر

کتابخانه bokeh در پایتون

  /  پایتون   /  کتابخانه bokeh در پایتون
بنر تبلیغاتی الف

کتابخانه Bokeh یکی از قدرتمندترین ابزارهای visualization در زبان پایتون است که امکان ایجاد نمودارهای تعاملی و پویا را برای وب فراهم می‌کند. این کتابخانه به ویژه برای برنامه‌نویسان و تحلیل‌گران داده‌ای که نیاز به گراف‌های پیچیده و کاربرپسند دارند، بسیار مناسب است.

ویژگی‌های کلیدی Bokeh

  • ایجاد نمودارهای تعاملی: قابلیت Zoom، Pan، Hover و ابزارهای دیگر.
  • رابط وب محور: خروجی‌ها به صورت HTML قابل نمایش هستند و به راحتی در صفحات وب قرار می‌گیرند.
  • یکپارچگی با داده‌های پانداس و نumpy: مدیریت داده‌ها و رسم نمودارها به سادگی انجام می‌شود.
  • امکان استفاده از سرور Bokeh: برای ساخت برنامه‌های وب تعاملی بدون نیاز به فریمورک‌های سنگین.

نصب Bokeh

برای نصب Bokeh از دستور زیر در ترمینال استفاده می‌کنیم:

pip install bokeh

این دستور آخرین نسخه کتابخانه را نصب می‌کند و آماده استفاده در پروژه‌های شما می‌شود.

ایجاد اولین نمودار با Bokeh

در این مثال یک نمودار ساده خطی رسم می‌کنیم:

from bokeh.plotting import figure, show

# داده‌ها

x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# ایجاد نمودار

p = figure(title="Simple Line Plot", x_axis_label='X-axis', y_axis_label='Y-axis')
p.line(x, y, legend_label="Line", line_width=2)

# نمایش نمودار

show(p)

در این کد:

  • با figure() یک نمودار جدید ایجاد می‌کنیم.
  • با line() داده‌ها را به صورت خط رسم می‌کنیم.
  • با show() خروجی نمودار در مرورگر نمایش داده می‌شود.

نمودارهای تعاملی و ابزارهای Bokeh

Bokeh امکان افزودن ابزارهای تعاملی مختلف را دارد:

from bokeh.models import HoverTool

hover = HoverTool(tooltips=[("X value", "@x"), ("Y value", "@y")])
p.add_tools(hover)

با استفاده از HoverTool می‌توان اطلاعات دقیق نقاط نمودار را هنگام حرکت موس مشاهده کرد.

انواع نمودارها در Bokeh

  • Line: نمودار خطی برای نمایش تغییرات پیوسته.
  • Bar: نمودار میله‌ای برای مقایسه مقادیر.
  • Scatter: نمودار پراکندگی برای نمایش توزیع داده‌ها.
  • Area: نمودار مساحتی برای نمایش تجمع مقادیر.
  • Heatmap: نقشه حرارتی برای نمایش داده‌های ماتریسی.

مثال نمودار پراکندگی (Scatter)

from bokeh.plotting import figure, show

x = [5, 7, 8, 7, 2, 17, 2, 9]
y = [99, 86, 87, 88, 100, 86, 103, 87]

p = figure(title="Scatter Plot Example", x_axis_label='X-axis', y_axis_label='Y-axis')
p.scatter(x, y, size=10, color="navy", alpha=0.5)

show(p)

در این مثال، scatter() برای رسم نقاط استفاده شده و با پارامتر alpha شفافیت نقاط کنترل می‌شود.

بهترین شیوه‌ها در استفاده از Bokeh

  • استفاده از ColumnDataSource: داده‌ها را در یک منبع مرکزی ذخیره کنید تا به راحتی بتوان آنها را در چند نمودار استفاده کرد.
  • مدیریت ابزارها: ابزارهای تعاملی اضافی را تنها در صورت نیاز فعال کنید تا رابط کاربری ساده و سریع باقی بماند.
  • بهینه‌سازی داده‌ها: هنگام کار با داده‌های بزرگ از روش‌های نمونه‌گیری (sampling) برای بهبود سرعت رندر نمودار استفاده کنید.
  • سازگاری با وب: خروجی‌ها را به صورت HTML ذخیره کنید تا بتوانید نمودارها را در سایت‌ها یا داشبوردها استفاده کنید.

استفاده از ColumnDataSource برای نمودار پویا

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource

source = ColumnDataSource(data=dict(x=[1,2,3,4,5], y=[6,7,2,4,5]))

p = figure(title="Dynamic Line with ColumnDataSource")
p.line('x', 'y', source=source, line_width=2)

show(p)

در این روش داده‌ها در ColumnDataSource قرار می‌گیرند و می‌توان با تغییر داده‌ها، نمودار را به صورت پویا به‌روزرسانی کرد.

مزایا و معایب Bokeh

مزایامعایب
  • رسم نمودارهای تعاملی با حداقل کدنویسی
  • یکپارچگی با داده‌های پانداس
  • قابلیت انتشار آنلاین و وب محور
  • پشتیبانی از نمودارهای پیچیده و سفارشی
  • برای داده‌های بسیار بزرگ نیاز به بهینه‌سازی دارد
  • مستندات پیچیده برای مبتدیان
  • نیازمند یادگیری مفاهیم ColumnDataSource و ابزارها

نتیجه‌گیری

Bokeh یک ابزار قدرتمند برای توسعه نمودارهای تعاملی و حرفه‌ای در پایتون است. با یادگیری اصول اولیه و بهترین شیوه‌ها، می‌توان نمودارهای جذاب، قابل تعامل و کارآمد برای تحلیل داده و نمایش نتایج ایجاد کرد. ترکیب Bokeh با داده‌های پانداس و NumPy امکان ایجاد داشبوردهای تحلیلی پیچیده را به راحتی فراهم می‌کند.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: