calendR
Kütüphanesi İle Takvim Hazırlamak
Bu tutorialda sizlere calendR
kütüphanesi ile R Studio’da nasıl takvim hazırlanacağını ve bu takvimlere ne gibi süslemeler yapılabileceğini anlatacağım.
İlk olarak paketi CRAN’dan indiriyoruz ve sonra uygun komut ile çağırıyoruz.
## Warning: package 'calendR' was built under R version 3.6.3
## ~~ Package calendR
## Visit https://r-coder.com/ for R tutorials ~~
Takvim Çizdirmek
calendR paketi ile takvim çizdirmek için yine aynı isimli fonksiyonu kullanıyoruz. Bu tüm takvim çizimleri için ana kullanılan fonksiyon olacak.
Takvimin dilini değiştirmek istiyorsan Sys.setlocale("LC_ALL", "English")
komutunu kullanabilirsin.
Hafta başlangıcı değişimi
Türkiye’de takvimler yurt dışının aksine Pazartesi ile başlar. Bunun için yine calendR fonksiyonu içindeki start argümanını kullanacağız. Başlangıç olarak seçeceğimiz günün İngilizce karşlığının baş harfini yazıyoruz.
Renklendirme
Bir yıldaki belirli günleri renklendirmek istiyorsak eğer yine calendR
fonksiyonu içindeki special.days
argümanını kullanacağız.
Bir yılda 365 gün olduğunu varsayarak, renklendirmek istediğimiz güne karşılık gelen değeri yazacağız. örneğin; 28 Şubat yılın 59. günüdür.
28 Şubat an itibarı ile renkli, ancak rengi daha görünür bir renkle değiştirmek istiyoruz. Bunun için yine calendR()
fonksiyonu içindeki special.col
ve low.col
argümanlarını kullanacağız.
Bu argümanlar içerisinden special.col
bizim renklendirmek istediğimiz günün rengini simgelerken, low.col
ise renklendirmek istediğimiz gün harici diğer günlerin renklerini simgeliyor.
Daha fazla gün renkledirmek istiyorsak eğer, bunun için special.days
argümanına c
komutu yardımı ile bir vektör atayacağız.
Örneğin, milli bayramları renklendirmek istiyoruz.
calendR(year=2020,start="M",special.days = c(114,140,243,303),special.col = "lightpink",
low.col = "lightblue")
Eğer sadece hafta sonlarını renklendirmek istiyorsak special.days
argümanına karşlık weekend
objesini karşılık getiriyoruz.
Takviminize özel günlerin notlarını almak istiyorsanız, tatil, doğum günü evlilik yıldönümü vs. Bu günleri özel olarak renklendirip “legend” olarak takviminize ekleyebilirsiniz.
Öncelikle legend argümanına karşılık gelecek uzunluğu 365 olacak bir vektör objesi yaratıyoruz.
Şimdi yılı yine 365 gün olarak düşünerek özel günlerimize karşılık gelen günlerin indeks değerlerine işaretlemek istediğimiz özel gün isimlerini yazacağız.
ozelgunler[42] <- "Yıldönümü"
ozelgunler[213:240] <- "Yıllıkİzin"
ozelgunler[315] <- "DoğumGünü"
ozelgunler[365] <- "Yılbaşı"
calendR(year = 2021,special.days = ozelgunler,
special.col = c("pink", "lightblue", # Colors
"lightgreen", "lightsalmon"),legend.pos = "right")
Peki hem haftasonu renkli hem de özel günler renkli takvimi nasıl yapabiliriz? Bunun için ufak bir vektör oluşturmamız gerekiyor.
Bu vektörün uzunluğu 365 olmalı ve hafta sonuna karşılık gele gün indexleri weekend olmalı. Diğer notlarımıza karşılık gelen indexler de daha sonra buraya eklenmeli.
2021 yılı takvimine baktığımızda ilk haftasonu günleri 2. ve 3. günlere geliyor. Daha sonrasında 7şer 7şer artıyor.
cmtsi<-seq(2,365,7)
pazar<-cmtsi+1
haftasonu<-c(cmtsi,pazar)
renkli[haftasonu]="Weekend"
head(renkli)
## [1] NA "Weekend" "Weekend" NA NA NA
Haftasonlarını ekledikten sonra şimdi diğer etkinliklerimizi de ekleyebiliriz.
renkli[42] <- "Yıldönümü"
renkli[213:240] <- "Yıllıkİzin"
renkli[315] <- "DoğumGünü"
renkli[365] <- "Yılbaşı"
calendR(year = 2021,start="M",special.days = renkli,
special.col = c("pink", "lightblue", # Colors
"lightgreen", "lightsalmon","grey"))
calendR
komutu takvimi otomatik olarak landscape (manzara) formatında oluşturuyor. Ancak takviminizi “portrait” (portre) olarak da bastırabilrsiniz.
Aylık Takvim Çizdirmek
Eğer sadece bir ayın takvimini çizdirmek istiyorsak eğer yine calendR
komutu içinde month
argümanını kullanacağız Bu argümana takvimini çizdirmek istediğimiz ayın matematiksel numarasını yazmamız yeterli. (1= Ocak, 2= Şubat gibi)
Aylık bir takvimde de renklendirme, özel gün ekleme gibi süsleme işlemleri tıpkı yıllık takvimde olduğu gibi. Örneğin,
Takviminizi farklı günler için farklı renklerle boyamak isterseniz de yine yıllık takvimde yapılan yolu tercih edebilirsiniz.
ekimrenk<-rep(NA,31)
cmtsi<-seq(2,31,7)
pazar<-cmtsi+1
hftsonu<-c(cmtsi,pazar)
ekimrenk[hftsonu]="Haftasonu"
ekimrenk[seq(7,28,7)]="Ders"
calendR(year=2021,month=10,start="M",special.days = ekimrenk,
special.col = c("red","yellow"),legend.pos = "bottom")
Aylık takviminize notlar almak istiyorsanız text
argümanı kullanarak bunu gerçekleştirebilirsiniz. Not alma özelliği sadece aylık takvimler için geçerlidir.
Belirli Günler Arasında Takvim
Örneğin 01.08.2020 ile 01.06.20213 arasındaki tarihleri içeren bir takvim çizdirmek isterseniz, bunun için start_date
ve end_date
argümanlarını kullanacağız.
Heat Map (Isı Haritası) Çizdirmek
Eğer takvimizin belirli bir değişkenin değerine günlerin koyu renk ya da açık renk olmasını istersek;örneğin günlük covid-19 vaka sayısı;heat map de çizdirebiliriz.
Bunun için üç ana argüman kullanacağız.
İlk argüman special days: Bu argümana uzunluğu 365 olacak şekilde bir vektör atayacağız. Atadığımız vektör bizim takvimimizi renklendirecek değişkenin değerleri olmak zorunda. Her bir indeks bir güne karşılık gelecek.Örneğin 2. sıradaki değer 5 ise bu 2 Ocak tarihindeki değer olacak. 59. indexteki değer 6 ise bu 28 Şubat tarihindeki değer olacak. Ancak burada dikkat edeceğiniz nokta vektördeki değerlerin karşılık gelen gün değerlerinden büyük olmaması. Örneğin 35. güne 48 değeri gelemez. Bu noktada yapılabilecek en akıllıca yol değerlerinizi standardize ederek 0 ile 1 aralığına getirmek olacaktır.
İkinci argüman ise gradient: Bu argüman bizim takvimimizi renklendiren argüman olacak.
Üçüncü argüman ise special.col: Bu da renklendirmenin tonlarını ayarlayacak argüman.
calendR(year = 2021,
special.days =rnorm(365),
gradient = TRUE,
special.col = rgb(1, 0, 0, alpha = 0.6),
low.col = "white")
Aynı şeyi aylık grafikler için de yapabilirsiniz.
Takvimin Fiziksel Görünüşünü Düzenleme
Buraya kadar aylık ve yıllık takvim nasıl çizdirilir, günler nasıl renklendirilir üzerine çeşitli örneklerde bulunduk. Şimdi takvimin başlığı, rengi, arka planı gibi detaylar üzerinde düzenlemeler yaparak takvimimizin görünüşünü düzenleyeceğiz.
- Yıllık grafiği ele alalım.
- Şimdi takvimimize başlık ekleyelim.
- Şimdi başlığın büyüklüğünü değiştirelim
- Şimdi rengini değiştirelim
- Başlığımızın altına alt başlık ekleyelim ve rengini ayarlayalım
calendR(year=2020,start="M",title = "2020 Yılı Takvimi",title.size = 30,
title.col = "red",subtitle = "Hazırlayan: Ozancan ÖZDEMİR",subtitle.col = "darkred") #subtitle: alt başlık ekliyor
- Hafta sonlarını renklendirelim
calendR(year=2020,start="M",title = "2020 Yılı Takvimi",title.size = 30,
title.col = "red",subtitle = "Hazırlayan: Ozancan ÖZDEMİR",
subtitle.col = "darkred",special.days = "weekend")
- Takvimimizin kenar çizgilerinin renklerini ve kalınlıklarını değiştirelim
calendR(year=2020,start="M",title = "2020 Yılı Takvimi",title.size = 30,
title.col = "red",subtitle = "Hazırlayan: Ozancan ÖZDEMİR",
subtitle.col = "darkred",special.days = "weekend",
col = "#f2f2f2",lwd = 2,lty = 2)
#col = Takvim çizgilerinin rengini ayarlıyor
# lwd = Takvim çizgilerinin kalınlığını ayarlıyor
#lty =Takvim çizgilerinin tipini ayarlıyor
- Şimdi ise takvimimizin yazı fontlarını, renklerini değiştirelim.
calendR(year=2020,start="M",title = "2020 Yılı Takvimi",title.size = 30,
title.col = "red",subtitle = "Hazırlayan: Ozancan ÖZDEMİR",
subtitle.col = "darkred",special.days = "weekend",
col = "#f2f2f2",lwd = 2,lty = 2,
font.family = "sans",
font.style = "bold",
weeknames.col = "gray30",
months.col = "gray30",
days.col = "gray30",
day.size = 3)
# font.family = Tüm metinlerin font ailesini belirler
# font.style = Tüm metinlerin font tipini (kalın, italik) belirler
# weeknames.col = Günlerin renklerini ayarlar
# months.col = Ayların renklerini ayarlar
# days.col = Takvimdeki sayıların renklerini ayarlar
# day.size = Takvimdeki sayıların büyüklüklerini ayarlar
- Son olarak takvimimize bir de arka plan fotoğrafı ekleyelim
Bunun için ise bg.img
argümanını kullanacağız
calendR(year=2020,start="M",title = "2020 Yılı Takvimi",title.size = 30,
title.col = "white",subtitle = "Hazırlayan: Ozancan ÖZDEMİR",
subtitle.col = "white",special.days = "weekend",
col = "#f2f2f2",lwd = 2,lty = 2,
font.family = "sans",
font.style = "bold",
weeknames.col = "white",
months.col = "gray30",
days.col = "gray30",
day.size = 3,
bg.img = "https://cdn.pixabay.com/photo/2019/06/25/04/49/landscape-4297402_960_720.jpg")
Daha resmi bir takvim hazırlamak isterseniz eğer aşağıdaki örneği inceleyebilirsiniz.
calendR(year=2021, start="M",
mbg.col = "darkred",
months.col = "white",
special.days = "weekend",
special.col = "lightpink",
lty = 0,
bg.col = "white",
title = "2021 Yılı Takvimi",
title.size = 30,
days.col = "black",
title.col="darkred")
# Bu örnekte ek olarak mbg.col argümanı ile ay isimlerinin arkadasına bir arka
# plan ekleyerek onların rengini ayarlayabilirsiniz.
Son olarak hazırladığınız takvimleri pdf olarak kaydedebilir, görsel sorun yaşamadan çıktısını alabilirsiniz. Örneğin son takvimimizi A4 kağıdına sığacak bir şekilde pdf olarak kaydedelim ve adına da 2021_takvim diyelim.
calendR(year=2021, start="M",
mbg.col = "darkred",
months.col = "white",
special.days = "weekend",
special.col = "lightpink",
lty = 0,
bg.col = "white",
title = "2021 Yılı Takvimi",
title.size = 30,
days.col = "black",
title.col="darkred",pdf = TRUE,
papersize = "A4",
doc_name = "2021_takvim")
[Kaynak için tıklayın] (https://r-coder.com/calendar-plot-r/?fbclid=IwAR3C77J3t5A-dFofbSXTP0Kk6xKzWQ-2Fa8m5Lb3rh-fekbbf6z_Pq6A5Nk)
Soru ve görüşleriniz için: ozancan@metu.edu.tr