PDA

View Full Version : گفتگو: Web-based Charting Solutions



CodeMasterX
یک شنبه 09 مهر 1391, 12:59 عصر
کتابخانه ها و کنترل های زیادی برای ترسیم چارت ها در برنامه های تحت وجود دارند که از معروف ترین آنها می توان به کتابخانه های زیر اشاره کرد:


MS Chart Control
Highcharts
jqPlot
amCharts


هر کدام از این کتابخانه ها مزایا و معایب خاص خودشون رو دارند. مثلا کنترل چارت خود مایکروسافت که اگر اشتباه نکنم با دات نت 3.0 عرضه شد اکثر چارت های مورد نیاز رو ترسیم می کنه، همچنین امکان سفارشی سازی تمام اجزای چارت ها فراهم شده، امکان ترسیم چارت های سه بعدی نیز وجود داشته و مهم تر از همه اینکه بدون کد Markup می توان با کد دات نت (Managed Code) چارت های مورد نظر رو ترسیم کرد. از طرفی کتابخانه ای مانند Highcharts نه تنها متن باز و رایگان است بلکه رابط کاربری بسیار شیک و حرفه ای داشته و User Interactive است. بر خلاف کنترل MS Chart که تنها یک عکس بعنوان خروجی تولید می کند. گرچه می توان چارت های تولید شده توسط MS Chart را نیز بگونه ای سفارشی کرد تا مثلا روی Data Point ها ToolTip های سفارشی نمایش داد و غیره.

یک چالش مهمی که هنگام ترسیم چارت ها با آن مواجه می شویم، تبدیل صحیح تواریخ میلادی به تواریخ شمسی است.

فرض کنید چارتی از نوع Line/Area می خواهیم ترسیم کنیم که محور افقی آن (X-Axis) از نوع تاریخ است و محور عمودی آن (Y-Axis) از نوع عددی. مثلا می خواهیم تاریخچه تغییر قیمت یک دارایی را نمایش دهیم، یعنی با ترسیم یک چارت نمایش دهیم که مثلا تمام سکه بهار آزادی در یک ماه گذشته در هر روز چه قیمتی داشته، که این قیمت میانگین قیمت این دارایی در هر روز می باشد. آرایه داده ای که به چارت ارسال می شود لیستی است که دو فیلد دارد: تاریخ قیمت و خود قیمت. ترسیم کردن چنین داده ای در یک چارت عمدتا ساده است اما چند نکته مهم مد نظر هستند:


تاریخ ها باید به تاریخ شمسی تبدیل شوند
ستون های چارت باید با فاصله زمانی روزانه و هفتگی تقسیم شوند


رویکرد های متفاوت و زیادی برای پیاده سازی چنین صورت مساله ای وجود دارد. با این حال از دوستانی که در زمینه ترسیم چارت های تحت وب فعالیت داشته اند درخواست می کنم تجربیات و نقطه نظرات خود را در این تاپیک ارسال کنند.

برای مشاهده نمونه ای از چارتی که در بالا تشریح کردم می توانید به سایت زیر مراجعه کرده و در پایین صفحه چارت اصلی سایت را مشاهده کنید.


http://www.pishrofund.ir

سایت پیشرو فاند از کتابخانه Highstock استفاده می کند که یکی از محصولات Highcharts است و عمدتا برای ترسیم چارت های اقتصادی و آماری استفاده می شود. استفاده از هر کتابخانه و کنترلی قابل قبول است، اما ترجیحا به دنبال راه حلی برای استفاده از Highstock یا Highcharts هستم.

چند قابلیت مهم کنترل Highstock در زیر لیست شده اند و در عکس ضمیمه نیز قابل مشاهده هستند:


امکان تبدیل چارت خروجی به فرمت های مختلف
امکان سفارشی سازی تولتیپ ها روی نقاط داده
امکان فیلتر کردن داده ها بر اساس تاریخ بصورت گرافیکی (در پایین چارت یک اسلایدر وجود دارد)
امکان فیلتر کردن داده ها بر اساس ضابطه های از پیش تعریف شده (مثلا فیلتر کردن بصورت روزانه، هفتگی، ماهانه و غیره)


http://dl.dropbox.com/u/6079739/snapshot.png

همچنین مد نظر داشته باشید که پاسخ هایتان حرفه ای و همراه با عکس یا کد ضمیمه باشد تا به پاسخ ها و نتایج عملی و کاربردی دست پیدا کنیم.

با تشکر
آ. ضیاء