روند تغییرات

نمودار میله‌ای و ترتیب

نمودار فراوانی

رابطه متغیرها و نمودار پراکندگی

نمایش داده‌ با رنگ و عمق

جمع بندی

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

فهرست

اسم و اندازه فونت

برای ترسیم تغییرات داده‌های شاخص کل تورم با استفاده از کد زیر نمودار مورد نظرمان را رسم کرده‌ایم. سطرهای 16 و 17 برای تنظیم فونت به کار گرفته شده‌اند.

				
					import matplotlib.pyplot as plt
import pandas as pd

# reading the data
d = pd.read_excel('D:/.../iran_statscenter_inflation_m12m.xlsx')

# replacing nan year with float
for i in range(1, d.shape[1]):
    if pd.isna(d.iloc[0, i]):
        d.iloc[0, i] = d.iloc[0, i-1] + 1/12

# plotting
plt.clf()
plt.figure(figsize = (10, 6))

font = {'family': 'Garamond', 'size': 21}    
plt.rc('font', **font)

plt.plot(year, inflation)
plt.xticks([x for x in range(1382, 1403, 2)])
plt.yticks([x for x in range(10, 60, 10)], 
           [str(x) + '%' for x in range(10, 60, 10)])

plt.savefig('D:/.../inflation_total_fa0.png')

				
			
inflation total fa0 | فونت فارسی در نمودارهای پایتون

در نمودار فوق از از فونت Garamond با اندازه 30 استفاده شده است. font** کلیدهای دیکشنری font را به عنوان متغیرهای ورودی و مقدارهای دیکشنری را به عنوان مقدارهای ورودی به متد rc می‌دهد. این شیوه کدنویسی عملکردی مشابه دستور زیر است.

				
					plt.rc(group = 'font', family = 'Garamond', size = 21)

				
			

فونت فارسی

با متد title و ylabel عبارات 'شاخص کل' و 'نرخ تورم' را به عنوان تیتر کلی و تیتر محور عمودی نمودار درج کرده‌ایم و فونت را از 'Garamond' به 'B Mitra' تغییر دادیم. در نظر داشته باشید پایتون تنها به فونت‌هایی که قبل از نصبش در کامپیوتر وجود داشته دسترسی دارد.

				
					plt.clf()
plt.figure(figsize = (10, 6))

font = {'family': 'B Mitra', 'size': 21}    
plt.rc('font', **font)

plt.plot(year, inflation)
plt.xticks([x for x in range(1382, 1403, 2)])
plt.yticks([x for x in range(10, 60, 10)], 
           [str(x) + '%' for x in range(10, 60, 10)])
plt.ylabel('نرخ تورم')
plt.title('شاخص کل تورم')

plt.savefig('D:/.../inflation_total_fa0.png')

				
			
inflation total fa0 1 | فونت فارسی در نمودارهای پایتون

این تغییرات اعداد را با موفقیت به فونت فارسی تبدیل کردند. اما در نمایش متن فارسی دچار اشکال شده‌اند، چرا که حروف جدا جدا و برعکس روی نمودار درج شده است. 

این مشکل با فراخوانی دو کتابخانه arabic_reshaper و bidi.algorithm قابل حل است. توابع این دو کتابخانه متن‌های فارسی و عربی را به گونه‌ای تغییر می‌دهد که هنگام درج روی نمودار به شکل قابل قبولی مشاهده شوند. آنچه از این دو کتابخانه مورد نیاز است را در تابع text_fa فراخوانی می‌کنیم تا هر زمان متن فارسی لازم به چاپ روی نمودار بود از این تابع استفاده کنیم.

				
					import arabic_reshaper
import bidi.algorithm

def text_fa(x):
    x = arabic_reshaper.reshape(x)
    x = bidi.algorithm.get_display(x)
    return x

				
			

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

				
					plt.clf()
plt.figure(figsize = (10, 6))

font = {'family' : 'B Mitra', 'size' : 21}    
plt.rc('font', **font)

plt.plot(year, inflation, linewidth = 3)
plt.xticks([x for x in range(1382, 1403, 2)])
plt.yticks([x for x in range(10, 60, 10)], 
           [str(x) + '%' for x in range(10, 60, 10)])

plt.ylabel(text_fa('نرخ تورم'))
plt.title(text_fa('شاخص کل تورم'))

plt.savefig('D:/.../inflation_total_fa1.png')

				
			
inflation total fa1 | فونت فارسی در نمودارهای پایتون

سایر تنظیمات

تمامی تنظیمات مورد نیاز در کتابخانه matplotlib قابل اعمال است. مثلا فرض کنید می‌خواهیم فاصله عنوان نمودار را با کادر منحنی بیشتر کنیم. این کار با rcParams زیر امکان‌پذیر است. 22 تعداد پیکسلی است که برای فاصله‌گذاری تعیین شده است.

				
					plt.rcParams['axes.titlepad'] = 22 
				
			

برای تغییرات دیگر نیز با جستجو در اینترنت می‌توانیم دستور مورد نیاز برای تغییر مورد نظرمان را پیدا کنیم. 

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors