من چندین سال است که از پایتون برای انجام محاسبات علمی و ساخت کلیه نقشه‌های خود استفاده می‌کنم. انگیزه‌های اصلی من برای استفاده از پایتون این بوده است که ۱. پایتون منبع باز است و ۲. مقدار فضای هارد دیسک را که توسط MATLAB اشغال کرده مناسب است. همچنین نداشتن نگرانی در مورد به روز نگه داشتن مجوزهای نرم افزار به عنوان یک مزیت اضافه شده است. انبوه آزمایش و خطاها و جستجوی گوگل که باید انجام می‌دادم تا زمانی که پارامترهای “عالی” را برای طرح‌های خود پیدا کنم، باعث شده است که این مقاله را گردآوری کنم. هم به عنوان یک ابزار آموزنده برای خوانندگان خارج، و هم راهی برای من که مواردی را برای خودم مستند کنم. اما امیدوارم این آموزش بتواند به تنظیمات و پارامترهای مهمی و رسم نمودار داده در پایتون اشاره کند که به شما امکان می‌دهد هر مجموعه داده را به دلخواه شخصی خود تنظیم کنید. اگر آناكوندا را از قبل ندارید، نصب آن را توصیه می‌كنم زیرا شامل تمام بسته‌های مورد نیاز برای تجزیه و تحلیل داده‌ها است.

رسم نمودار داده در پایتون | وارد کردن بسته‌ها

اکثر توابع استفاده شده در بسته matplotlib است (با بیش‌تر توابع رسم از زیر بسته matplotlib.pyplot). علاوه بر این، من معمولاً numpy را برای هر محاسبه سریع و pylab را برای تولید سریع رنگ از هر نقشه رنگی داخلی وارد می‌کنم. اغلب اوقات، هنگامی که بسته‌ها را وارد می‌کنیم، یک نام مستعار کوتاه فرم ایجاد می‌کنیم (به عنوان مثال mpl برای matplotlib) بنابراین می‌توانیم به جای تایپ کردن هر بار matplotlib، با استفاده از نام مستعار به عملکردهای آن مراجعه کنیم.

1 آموزش رسم نمودار داده در پایتون برای نشریات علمی

بارگیری داده‌ها (Loading Data)

از آنجا که داده‌های ابزار علمی معمولاً نسبتاً ساده هستند (معمولاً فقط یک متغیر مستقل است که کنترل می‌کنیم و یک متغیر وابسته اندازه گیری شده است)، می‌توانیم از numpy.loadtxt برای وارد کردن داده‌های خود استفاده کنیم. برای مجموعه داده‌های پیچیده‌‌تر، من بسیار توصیه می‌کنم که از پانداها (pandas) استفاده کنید، که عملکردهای فوق العاده پیچیده‌ای برای بارگیری و پاکسازی داده‌ها برای تجسم دارد، یک اسناد جامع را می‌توانید در اینجا پیدا کنید. برای این مثال، من یک فایل به نام Absorbance_Data.csv با برخی از داده‌های جذب برای دو نمونه جمع آوری شده در دستگاه اسپکتروفتومتر دارم.

2 آموزش رسم نمودار داده در پایتون برای نشریات علمی

با دستور زیر می‌توانیم این داده‌ها را در اسکریپت خود بارگذاری کنیم:

3 آموزش رسم نمودار داده در پایتون برای نشریات علمی

پرونده خود را به همراه پارامترها به تابع numpy.loadtxt منتقل می‌کنیم:

  • unpack: هر ستون را به یک آرایه انتقال می‌دهد، به شما امکان می‌دهد چندین متغیر را همزمان ببندید (طول موج، samp_1_abs ، samp_2_abs)
  • delimiter: شخصیت جداکننده که برای جداسازی ستون‌ها استفاده می‌شود
  • skiprows:مقدار ردیفی که باید در بالای پرونده رد شود (از آنجا که ردیف اول عنوان ستون است، ما می‌خواهیم این را رد کنیم بنابراین skiprows = 1)

رسم نمودار داده در پایتون | رسم اطلاعات ما

هنگامی که داده های جذب خود را بارگیری کردیم ، می توانیم به سرعت هر دو مجموعه داده را با کد زیر ترسیم کنیم:

4 آموزش رسم نمودار داده در پایتون برای نشریات علمی

داده‌ها به درستی رسم می‌شوند، اما تنظیمات پیش فرض matplotlib به خوبی رقم کیفیت انتشار را نشان نمی‌دهد. همانطور که برخی از پارامترهای زیر را تغییر می‌دهیم، در انتها به یک طرح بسیار بهتر خواهیم رسید.

Fonts

این تنظیماتی است که من زمان زیادی را صرف آن می‌کنم، انتخاب فونت مناسب برای نقشه‌هایم. سیستم شما از قبل دارای یک لیست طولانی از فونت‌های از پیش نصب شده است و شما می‌توانید با استفاده از موارد زیر بررسی کنید که کدام فونت‌ها از قبل برای matplotlib در دسترس هستند:

5 آموزش رسم نمودار داده در پایتون برای نشریات علمی

اگر می‌خواهید یک فونت جدید اضافه کنید و سپس از آن برای نقشه‌ها استفاده کنید، این نیز امکان پذیر است. ابتدا باید فونت مورد نظر خود را بارگیری و نصب کنید، گزینه‌های زیادی را می‌توانید در اینجا پیدا کنید. پس از نصب، باید حافظه پنهان فونت را از نو بسازید تا هنگام ساختن شکل، در دسترس matplotlib باشد. ما این کار را به صورت زیر انجام می‌دهید:

6 آموزش رسم نمودار داده در پایتون برای نشریات علمی

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

رسم نمودار داده در پایتون | پارامترهای کلی نمودار

سه پارامتر کلی که در ابتدای اسکریپت نمودار خود تنظیم کردم عبارتند از: قلم، اندازه قلم و عرض خط محور. اینها اساساً پارامترهای سراسری هستند که بعداً آن‌ها را ویرایش نمی‌کنم، بنابراین تنظیم آن‌ها در ابتدا همه چیز را راحت‌تر می‌کند (یعنی لازم نیست برای هر برچسب پایین خط به طور واضح قلم و اندازه را تعیین کنید). ما باید کد زیر را قبل از تولید هرگونه ارقام اضافه کنیم، بنابراین من آن را بلافاصله پس از وارد کردن بسته‌ها بلافاصله در بالای اسکریپت قرار می‌دهم.

7 آموزش رسم نمودار داده در پایتون برای نشریات علمی

مجموعه‌ای از رنگ‌ها را ایجاد کنید

اگر مجموعه‌ای از رنگ‌ها را دارید که دوست دارید از آن‌ها استفاده کنید، آزاد هستید که از این مرحله صرف نظر کنید. در این حالت، از آن‌جا که فقط دو نمونه داریم، بهتر است به صورت دستی دو رنگ با شدت بالا را انتخاب کنید. اما، اگر می‌خواهید لیستی از رنگ‌ها ایجاد کنید بدون اینکه تلاش زیادی برای شما انجام شود، ما می‌توانیم با استفاده از بسته pylab که وارد کرده‌ایم لیستی از آن‌ها را از انواع رنگ آمیزی داخلی matplotlib تولید کنیم که می‌توانید در اینجا پیدا کنید. این مورد هنگامی که به تعداد زیادی رنگ نیاز دارید بسیار مفید واقع می‌شود، زیرا می‌توانید آن‌ها را به صورت برنامه ریزی تولید کنید.
برای مجموعه داده‌های ما، ما فقط علاقه مندیم که به راحتی ردپای خود را از هم تشخیص دهیم، بنابراین بهترین کار ما این است که با استفاده از یکی از نقشه‌های رنگی در بخش کیفی (من از “tab10” برای این مثال استفاده خواهم کرد). ما از کد زیر استفاده می‌کنیم، اولین آرگومان نام colormap است و دومی تعداد رنگ‌هایی است که می‌خواهیم تولید کنیم:

8 آموزش رسم نمودار داده در پایتون برای نشریات علمی

اگر برای مثال میزان وابستگی به دما را در یک نمونه اندازه گیری می‌کردیم و می‌خواستیم طیف‌ها را در دماهای مختلف ترسیم کنیم، می‌توانیم از یک نقشه رنگ واگرا مانند “گرمسیر” استفاده کنیم. درنهایت، نقشه رنگی که انتخاب می‌کنید به شما بستگی دارد و بر اساس نوع داده‌ای است که در نظر می‌گیرید.

رسم نمودار داده در پایتون | شکل و محورها را ایجاد کنید

ما باید یک شکل، که یک پنجره خالی است، ایجاد کنیم و سپس برای طرح خود یک شی axes به آن اضافه کنیم. برای تولید شکل، موارد زیر را داریم:

9 آموزش رسم نمودار داده در پایتون برای نشریات علمی

figsize : اندازه شکل ما (عرض ، ارتفاع) در اینچ ، با مقدار پیش فرض (۶/۴ ، ۴/۸)

اکنون باید با تعیین مختصات پایین سمت چپ و عرض و ارتفاع در مختصات نسبی، یک شی محور به شکل خالی خود اضافه کنیم (۱ اندازه کامل پنجره شکل است). اگر بخواهیم کل شکل ما را پر کند، می‌توانیم [۰ ، ۰ ، ۱ ، ۱] را تعیین کنیم که گوشه پایین سمت چپ را روی (۰ ، ۰) و عرض و ارتفاع را به ۱ تنظیم می‌کند.

10 آموزش رسم نمودار داده در پایتون برای نشریات علمی

ما می توانیم از این ساختار محور برای ساختن شکل و صفحه‌های پوششی با ساخت چندین آبجکت به صورت زیر استفاده کنیم:

11 آموزش رسم نمودار داده در پایتون برای نشریات علمی

12 آموزش رسم نمودار داده در پایتون برای نشریات علمی

خارها را بردارید

اگر نمی‌خواهیم طرح ما کاملاً محصور باشد، می‌توانیم خارهای بالا و راست را به صورت زیر برداریم:

13 آموزش رسم نمودار داده در پایتون برای نشریات علمی

رسم نمودار داده در پایتون | پارامترهای تیک (Tick Parameters)

ما می توانیم عرض و طول تیک‌ها را متناسب با پارامترهای محور خود با کد زیر ویرایش کنیم. اگر کنه‌های جزئی داشته باشیم‌، می‌توانیم خصوصیات این‌ها را نیز ویرایش کنیم:

14 آموزش رسم نمودار داده در پایتون برای نشریات علمی

  • which  – ویرایش علامت‌های اصلی، جزئی یا هر دو
  • size – طول تیک‌ها در نقاط
  • width  – عرض خط کنه ها (می توانیم این را برابر با عرض خط محور خود قرار دهیم)
  • direction – تیک‌ها به داخل، خارج یا ورودی وارد می‌شوند (هر دو)
  • top / right –  تیک‌هایی در محورهای ثانویه وجود خواهد داشت (بالا / راست)

15 آموزش رسم نمودار داده در پایتون برای نشریات علمی

رسم و تنظیم محدوده / تیک‌ها

اکنون می‌توانیم داده‌های خود را با استفاده از رنگ‌هایی که از colormap تولید کرده‌ایم برای تشخیص نمونه‌ها ترسیم کنیم:

16 آموزش رسم نمودار داده در پایتون برای نشریات علمی

  • linewidth : عرض خط در طرح
  • color : رنگ خط در طرح
  • label : برچسب برای ردیابی

اکنون می‌توانیم محدوده‌های محور x و y را با خطوط زیر تنظیم کنیم:

17 آموزش رسم نمودار داده در پایتون برای نشریات علمی

متوجه می‌شویم که علامت‌های تیک بین دو محور نامتعادل به نظر می‌رسند، همچنین می‌توانیم با استفاده از تابعی به نام MultipleLocator این ویرایش را به صورت نیمه دستی ویرایش کنیم که باعث ایجاد تیک در هر چند عدد پایه‌ای می‌شود که ارائه می‌دهیم. ما باید major_locator را برای تیک‌های اصلی و minor_locator را برای تیک‌های جزئی ویرایش کنیم. ما تیک‌های اصلی را هر ۱۰۰ نانومتر و تیک‌های جزئی را هر ۵۰ نانومتر برای محور x و تیک‌های اصلی را هر ۰/۵ و تیک‌های کوچک را هر ۰/۲۵ را برای محور y تنظیم خواهیم کرد.

17 آموزش رسم نمودار داده در پایتون برای نشریات علمی

رسم نمودار داده در پایتون | برچسب‌های Axis

ما باید برچسب‌ها را به محورهای x و y اضافه کنیم، که به راحتی می‌توانیم آن‌ها را با کد زیر انجام دهیم:

19 آموزش رسم نمودار داده در پایتون برای نشریات علمی

labelpad : پدینگ اضافی بین برچسب تیک و برچسب Axis

20 آموزش رسم نمودار داده در پایتون برای نشریات علمی

اگر می خواهید نویسه‌های یونانی را در برچسب‌های خود بگنجانید، می‌توانید از نحو LaTeX برای این کار استفاده کنید. ما یک رشته خام را با قرار دادن رشته با r ایجاد می‌کنیم و دستور LaTeX را با $$ ضمیمه می‌کنیم. با این وجود، این از قلم LaTeX پیش فرض برای نویسه‌های یونانی استفاده می‌کند. اگر بخواهیم از همان قلم بقیه طرح استفاده کنیم (با فرض وجود کاراکتر)، دستور خود را با $\mathregular{'Command goes here'}$ ضمیمه می‌کنیم.

21 آموزش رسم نمودار داده در پایتون برای نشریات علمی

Axis Ticks‌های ثانویه

اگر بخواهیم تیک‌ها را در یکی از محورهای ثانویه (بالا / راست) قرار دهیم تا مجموعه داده یا مقیاس بندی دیگری نشان داده شود، می‌توانیم این کار را با استفاده از یک محور انگلی (parasitic axis) انجام دهیم. این شی محورها یکی از محورهای طرح اصلی را کپی می‌کند و به شما امکان می‌دهد مقیاس بندی را از طرف دیگر تغییر دهید. برای نشان دادن این، می‌توانیم از داده‌های جذب خود به عنوان مثال استفاده کنیم. محور x جریان، طول موج نور جذب شده است، اما بر اساس کاربرد، انرژی این نور می‌تواند پارامتر مربوطه باشد.

ما می‌توانیم یک محور x دوم در بالای نمودار ایجاد کنیم تا مقیاس انرژی را نشان دهیم. اول، ما باید یک محور انگلی یا با دستور twinx() یا twiny() ایجاد کنیم تا به ترتیب محورهای x یا y را شبیه سازی کنیم. در این مثال، ما ثابت داده‌های محور y را می‌خواهیم، بنابراین محور y را شبیه سازی خواهیم کرد. همچنین باید پارامترهای تیک این محور x جدید را با محور x طرح قدیمی مطابقت دهیم (و top='on' را از پارامترهای اصلی x-axis حذف کنیم).

22 آموزش رسم نمودار داده در پایتون برای نشریات علمی

برای اینکه کار ما در افزودن تیک در واحدهای انرژی به این محور راحت‌تر باشد‌، می‌توانیم تابعی را برای تبدیل انرژی به طول موج بنویسیم (از آنجا که تیک‌ها را در محور طول موج در نقاطی قرار می‌دهیم که مقادیر انرژی با آن‌ها مطابقت داشته باشد). ورودی E را به عنوان یک آرایه در نظر خواهیم گرفت تا بتوانیم همه تبدیل‌ها را همزمان انجام دهیم:

23 آموزش رسم نمودار داده در پایتون برای نشریات علمی

از آنجا که این یک تحول غیر خطی است ، ما نمی‌توانیم به راحتی از تابع MultipleLocator استفاده کنیم و با استفاده از تابعی به نام FixedLocator نشانه‌های تیک را به صورت دستی اضافه خواهیم کرد. برای استفاده از FixedLocator ما یک آرایه از تمام مکان‌هایی که می‌خواهیم در آن‌ها علامت تیک باشد وجود دارد:

24 آموزش رسم نمودار داده در پایتون برای نشریات علمی

از آنجا که ما تیک‌ها را به صورت دستی اضافه کردیم، باید برچسب‌های اصلی تیک‌ها را نیز به صورت دستی اضافه کنیم.

25 آموزش رسم نمودار داده در پایتون برای نشریات علمی

سرانجام، ما همچنین می خواهیم یک برچسب محور به محور x جدید خود اضافه کنیم و مطمئن شویم که محدوده‌های محور همان محور x اصلی هستند:

26 آموزش رسم نمودار داده در پایتون برای نشریات علمی

رسم نمودار داده در پایتون | ذخیره طرح شما

سرانجام ، ذخیره طرح نهایی شما بسیار ساده است – برای این کار می توانیم از تابع plt.savefig استفاده کنیم.

27 آموزش رسم نمودار داده در پایتون برای نشریات علمی

  • dpi : وضوح تصویری (در این حالت ما فرمت .png ذخیره می‌کنیم، بنابراین این بدان معنی است که ما با وضوح ۳۰۰ نقطه در هر اینچ ذخیره می‌کنیم. سایر فرمت‌های پرونده ممکن که می‌توانید ذخیره کنید .ps ،pdf هستند. و .svg که همگی قالب‌های گرافیکی برداری هستند، در این صورت نیازی به تعیین مقدار dpi نیستید)
  • transparent : هر شکلی را شفاف کنید.
  • bbox_inches : جعبه محدود کننده اطراف شکل را مشخص می‌کند (تضمین می‌کند که فضای خالی دیگری در اطراف شکل وجود نداشته باشد)

برای مشاهده طرح آخر خود در یک پنجره شکل ، باید پس از ذخیره شکل ، یک دستور plt.show()  اضافه کنیم.

28 آموزش رسم نمودار داده در پایتون برای نشریات علمی

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

برای یادگیری دوره‌های پایتون می‌توانید در سایت‌های datacamp و codecademy ثبت نام کنید و برای پرداخت هزینه‌ی ارزی از خدمات خرید با پی پال و خرید با ویزا کارت سایت اول پرداخت استفاده کنید.

پاسخ

لطفا نظر خود را وارد کنید
لطفا نام خود را اینجا وارد کنید