ابزار freezeColors/unfreezeColors برای مدیریت چندین رنگ‌نما در یک محور MATLAB

icon

ابزار freezeColors/unfreezeColors یک تابع مفید برای نرم‌افزار MATLAB است که امکان استفاده از چندین colormap (نقشه رنگی) را در یک figure و حتی درون یک axis (محور) فراهم می‌کند. این ابزار برای کاربرانی که می‌خواهند داده‌های مختلف را با نقشه‌های رنگی متنوع در یک نمودار نمایش دهند، بسیار مفید است.

تاریخچه ابزار freezeColors

  • در سال ۲۰۰۵، این ابزار به منظور فعال‌سازی استفاده از چندین نقشه رنگی در یک شکل (figure) نوشته شد، زیرا MATLAB در آن زمان از این قابلیت پشتیبانی نمی‌کرد.
  • در سال ۲۰۰۹، این ابزار در File Exchange MATLAB به عنوان “انتخاب هفته” برگزیده شد.
  • در سال ۲۰۱۴، MATLAB این قابلیت را فراهم کرد که هر محور بتواند نقشه رنگی مجزای خود را داشته باشد. با این حال، freezeColors همچنان محبوب باقی ماند زیرا انعطاف‌پذیری بیشتری را برای استفاده از چندین نقشه رنگی در یک محور واحد فراهم می‌کرد.
  • در سال ۲۰۲۲، این ابزار برای به‌روزرسانی و بهبود قابلیت‌های خود مجدداً اصلاح شد تا در تمامی شرایط مورد نیاز کاربران، بدون مشکل عمل کند.

ویژگی‌های جدید در نسخه ۲.۵ (۲۰۲۲)

  • بهینه‌سازی تمرکز بر روی استفاده از چندین نقشه رنگی در یک محور واحد
  • روش جدید برای فریز کردن رنگ‌ها در نوار رنگی (colorbar)
  • پشتیبانی کامل از نمودارهای پراکندگی (scatter)
  • بهبود عملکرد هنگام استفاده از دستور freezeColors(axesHandle)
  • اضافه شدن ابزار jicolorbar برای جایگزینی نوار رنگی استاندارد MATLAB

نحوه استفاده از freezeColors

۱. برای فریز کردن تمامی اشیای موجود در محور فعال:

freezeColors

۲. برای فریز کردن اشیای موجود در یک محور خاص:

freezeColors(axh)

۳. برای ایجاد یک colorbar فریز شده، متناسب با نقشه رنگی فعلی:

freezeColors(colorbar)

مثال‌ها

۱. استفاده از چندین نقشه رنگی در یک figure (روش قدیمی)

subplot(2,1,1); imagesc(peaks); colormap hot; freezeColors; freezeColors(colorbar)
subplot(2,1,2); imagesc(peaks); colormap hsv; freezeColors; freezeColors(colorbar)

این روش قبل از معرفی قابلیت colormap مستقل برای هر محور در MATLAB استفاده می‌شد.

multiple colormaps in a figure

۲. استفاده از قابلیت colormap مستقل برای هر محور (MATLAB 2014 و جدیدتر)

subplot(2,1,1); imagesc(peaks); colorbar; colormap(gca, 'hot')
subplot(2,1,2); imagesc(peaks); colorbar; colormap(gca, 'hsv')

multiple colormaps in an axis

۳. استفاده از چندین نقشه رنگی در یک محور واحد

این قابلیت یکی از ویژگی‌های منحصر‌به‌فرد freezeColors است که MATLAB به طور پیش‌فرض از آن پشتیبانی نمی‌کند.

figure
surf(peaks); colormap parula; freezeColors; freezeColors(jicolorbar); hold on
surf(peaks+20); caxis([14 28]); colormap gray; freezeColors; freezeColors(colorbar);
surf(peaks+40); caxis(caxis+20); colormap hot; freezeColors; freezeColors(jicolorbar('horiz'));
axis auto; shading interp; caxis([14 28]); view([-27 14]); set(gca, 'color', [.8 .8 .8])

در این مثال، سه سطح مختلف با نقشه‌های رنگی parula، gray و hot در یک محور نمایش داده شده‌اند.

second examplethird example with streamribbon and coneplot

چگونه freezeColors کار می‌کند؟

در MATLAB، رنگ برخی از اشیای گرافیکی مانند surf، image، scatter، patch، coneplot، streamribbon توسط خاصیت CData کنترل می‌شود. این داده‌ها معمولاً به نقشه رنگی فعلی نگاشته می‌شوند. freezeColors مقدار CData را از حالت مقیاس‌یافته به مقدار مستقیم RGB تبدیل می‌کند، بنابراین تغییر نقشه رنگی دیگر بر آن تأثیر نمی‌گذارد.

این ابزار همچنین داده‌های اصلی را ذخیره کرده و امکان بازگردانی آن‌ها را از طریق دستور unfreezeColors فراهم می‌کند.

محدودیت‌ها

  • به دلیل تغییرات MATLAB در پیوسته بهبود قابلیت‌های گرافیکی، ابزار freezeColors گاهی اوقات در برخی از نسخه‌های جدید به درستی کار نمی‌کند. به همین دلیل، در نسخه ۲.۵ این مشکلات برطرف شده است.
  • برای colorbar، روش قدیمی دیگر کار نمی‌کند و باید از freezeColors(colorbar) استفاده کرد.
  • امکان استفاده از چندین colorbar در یک محور در حال توسعه است و برای پایداری بیشتر نیاز به اصلاحات بیشتری دارد.

جمع‌بندی

freezeColors/unfreezeColors یک ابزار قدرتمند برای کاربرانی است که نیاز به نمایش چندین نقشه رنگی در یک figure یا حتی درون یک محور واحد در MATLAB دارند. این ابزار انعطاف بیشتری نسبت به امکانات پیش‌فرض MATLAB ارائه داده و قابلیت‌های متنوعی مانند فریز کردن colorbar و استفاده همزمان از چندین colormap را در اختیار کاربران قرار می‌دهد.

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

دسته بندی: برچسب ها: