کتابخانه ggplot2 یکی از مهمترین و پرکاربردترین ابزارها برای مصورسازی در R است. با اینحال استفاده از قلمهای مختص زبان فارسی در این کتابخانه احتیاج به مقدار مختصری آمادهسازی دارد. شما پس از طی این مراحل قادر خواهید بود هر قلمی را که تمایل دارید در نمودارهای خود استفاده کنید. فرض کنید میخواهید در یک نمودار پراکندگی رابطه میزان جمعیت و مساحت ۴ شهر پرجمعیت دنیا را بررسی کنید.
| نام شهر | جمعیت | مساحت | 
|---|---|---|
| توکیو | 37435191 | 2194 | 
| دهلی | 29399141 | 1484 | 
| شانگهای | 26317104 | 6340 | 
| سائوپائولو | 21846507 | 1521 | 
ابتدا دیتافریم مورد نیاز را ایجاد میکنیم:
				
					df <- data.frame(city_name = c("توکیو","دهلی","شانگهای","سائوپائولو"),
                 population=c( 37435191,29399141,26317104,21846507),
                 area=c( 2194,1484,6340,1521)) 
				
			
		سپس برای رسم نمودار پراکندگی به ترتیب زیر عمل میکنیم
				
					ggplot(df,aes(area,population))+ 
  geom_point()+
  geom_text(aes(label= city_name), hjust = 0 , vjust =1)+
  labs(title ="مقایسه مساحت شهرهای پرجمعیت دنیا" ,
       subtitle ="نمونه برای استفاده قلم فارسی" ,
       x= "مساحت به کیلومتر مربع",
       y= "جمعیت") 
				
			
		همانطور که مشاهده میکنید قلم استفاده شده در نمودار برای استفاده در اسناد , گزارشها مناسب نیستند.
تغییر فونت در ویندوز
بسته به نوع سیستم عاملی که استفاده میکنید، ویندوز، اوبونتو یا دیگر سیستم عاملها، نحوه استفاده از فونتها کمی متفاوت است. برای تغییر فونت در نمودارها لازم است ابتدا فونتهای مورد نیاز به R وارد شوند و سپس استفاده کنیم. در ویندوزهای ۶۴ بیتی برای شناساندن فونتهای نصب شده در پوشه fonts سیستم عامل به R از کتابخانهای به نام extrafont استفاده میشود.
				
					install.packages('extrafont')
library(extrafont) 
				
			
		پس از نصب و فراخوانی کتابخانه extrafont لازم است با دستور font_import() قلمهای نصب شده در سیستم عامل وارد R شود. اما به دلایلی این دستور با خطا روبرو خواهد شد. دلیل این خطا بروز نشدن کتابخانهای واسط است که بسیاری از فونتهای قدیمیتر را پشتیبانی نمیکند. برای رفع این مشکل ابتدا باید نسخه قدیمیتر کتابخانه واسط Rttf2pt1 را نصب کرد.
				
					# to install package
install.packages('remotes')
# install the older version package 
remotes::install_version("Rttf2pt1", version = "1.3.8")
# importing windows fonts 
font_import() 
				
			
		دستور font_import() بسته به مشخصات فنی سیستم شما و تعداد فونتهای موجود در پوشه Fonts ممکن است کمی زمانبر یاشد. خبر خوب آنکه اجرای این دستور تنها یکبار برای همیشه کافی است مگر آنکه ورژن R را با حذف و نصب مجدد بروزرسانی کنید. پس از وارد کردن فونتها به ویندوز، با اجرای دستور زیر R این امکان را خواهد داشت که از فونتهای موجود در سیستم استفاده کند.
				
					loadfonts(device = "win") 
				
			
		
				
					fonts() 
				
			
		
				
					  [1] "Agency FB"                       "Aldhabi"                         "Algerian"                       
 [4] "Andalus"                         "Arial Black"                     "Arial"                          
 [7] "Arial Narrow"                    "Arial Rounded MT Bold"           "Bahnschrift"                    
 [10] "Baskerville Old Face"            "Bauhaus 93"                      "Bell MT"                        
 [13] "Berlin Sans FB"                  "Berlin Sans FB Demi"             "Bernard MT Condensed"           
 [16] "Blackadder ITC"                  "Bodoni MT"                       "Bodoni MT Black"                
 [19] "Bodoni MT Condensed"             "Bodoni MT Poster Compressed"     "Book Antiqua"                   
 [22] "Bookman Old Style"               "Bookshelf Symbol 7"              "Bradley Hand ITC"               
 [25] "Britannic Bold"                  "Broadway"                        "Brush Script MT"                 
				
			
		حل مشکل قلم فارسی
اگر پس از اجرای دستور fonts() قلمهای بخصوصی را مشاهده نمیکنید، جای نگرانی نیست. این اشکال به دلیل نوع ساختار قلمهای فارسی است.
برای حل مشکل ابتدا نرم افزار متن باز و رایگان font forge را از این لینک دانلود و نصب کنید. در اینجا قصد داریم دو قلم فارسی Vazir و Sahel FD را به R معرفی کنیم تا در نمودارها استفاده کنیم.
نکته۱: برای دریافت و نصب رایگان قلمهای
VazirوSahel FDبه وبسایت این قلمها مراجعه کنید. فونت ساحل فونت وزیر
نکته۲: فونتSahel FDدر پوشهfarsi digitsقرار دارد. لازم است آن راunzipو در محلی ذخیره کنید.
نکته۳: فونتSahel FDدارای اعداد فارسی است و در بسیاری موارد کار را بسیار سادهتر میکند.
پیشنهاد میشود فونتهای فارسی مورد نیاز خود را در فولدری جدید ذخیره کنید و بعد به سراغ مراحل بعد بروید. مثلا در درایو C پوشهای به نام rfont ایجاد کنید. شما تا اینجا باید چیزی شبیه شکل زیر داشته باشید.
 
													پس از دانلود و نصب font forge آن را باز کنید:
 
													سپس به پوشهای که فونتها را قراردادهاید بروید و فونت Sahel FD را انتخاب کنید. آن را انتخاب کنید
 
													از قسمت file گزینه Generate Fonts را انتخاب کنید.
 
													اطمینان پیدا کنید گزینه True Type را انتخاب کرده اید.
 
													اگر نوع انتخاب شده پیشفرض چیز دیگری بود آن را به true type تغییر دهید.
 
													دکمه generate را بفشارید!
 
													اگر اخطاری در گوشه پایین سمت راست دریافت کردید آن را نادیده بگیرید. همچنین اگر اخطاری مبنی بر موجود بودن فونت گرفتید گزینه replace را انتخاب کنید.
حال کافی است فونتهای ایجاد شده را به R معرفی کنید. برای اینکه دوباره از دستور زمانبر font_import() استفاده نکنید میتوانید با دستور زیر تنها فونتهای جدید را بخوانید:
				
					ttf_import(paths = "c:/rfonts", recursive = TRUE) 
				
			
		اگر با خطایی مواجه نشدید کار با موفقیت تمام شده است.برای فونت وزیر نیز همین مراحل را تکرار کنید. چون فونتهای جدیدی را وارد R کردهاید یکبار دیگر دستور زیر را اجرا کنید:
				
					loadfonts(device = "win") 
				
			
		رسم نمودار با فونت فارسی
اکنون میتوانید مثالی که در ابتدای این راهنما آورده شد را با کد زیر بازنویسی کنید.
				
					ggplot(df,aes(area,population))+ 
  geom_point()+
  geom_text(aes(label= city_name),family="Vazir" ,hjust = 0 , vjust =1)+
  labs(title ="مقایسه مساحت شهرهای پرجمعیت دنیا" ,
       subtitle ="نمونه برای استفاده قلم فارسی" ,
       x= "مساحت به کیلومتر مربع",
       y= "جمعیت")+
  theme(
    text = element_text(family = "Sahel FD" , size = 20)
  ) 
				
			
		در انتها اگر میخواهید با کتابخانه قدرتمند ggplot2 آشنا شوید به اینجا مراجعه کنید.

بهروزرسانی بسته ggplot2 +تغییرات ۴.۰
وبلاگ TidyVerse 1 خبر از انتشار نسخه جدید بسته ggplot2 داد و تغییرات زیاد این بهروزرسانی، دلیلی شده تا شماره اصلی این بسته را نیز
 
								 
								 
								 
								 
                
یک پاسخ
خیلی عالی بود
کار من را راه انداخت
چند روز بود سر این گیر کرده بودم
خیلی خیلی ممون