Ana içeriğe atla

Matplotlib zaman serisi çizgi grafiği

Bu eğitim, matplotlib’de zaman serisi çizgi grafikleri oluşturmayı ve özelleştirmeyi ele alır.
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Zaman serisi, kronolojik sırayla zamana göre indekslenmiş veri gözlemleri koleksiyonudur. Bu gözlemler genellikle (ama zorunlu olmaksızın) düzenli zaman aralıklarında kaydedilir. Zaman serileri; bankacılık, alım satım, pazarlama, bilim ve diğer sektörlerde sıklıkla kullanılır. Zaman serisi verilerinin en tipik görsel gösterimi, zamanın x eksenine ve ölçülen değerin y eksenine yerleştirildiği bir çizgi grafiktir.

Bu eğitimde, Python’un temel çizim kütüphanesi olan matplotlib ile zaman serisi çizgi grafikleri oluşturmayı ve özelleştirmeyi inceleyeceğiz.

Matplotlib ile zaman serisi çizimine başlangıç

Kitaplıkların içe aktarılması ve verinin yüklenmesi

Önce gerekli Python kitaplıklarını içe aktaracak ve veriyi yükleyeceğiz – bir Kaggle veri kümesi olan Daily Exchange Rates per Euro 1999-2023. Ayrıca bazı temel veri temizleme adımlarını uygulayacağız:

import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime

df = pd.read_csv('euro-daily-hist_1999_2022.csv')
df = df.iloc[:, [0, 4, 28, -2]]
df.columns = ['Date', 'CAD', 'NZD', 'USD']

for col in ['CAD', 'NZD', 'USD']:
    df = df[df[col] != '-']
    df[col] = pd.to_numeric(df[col])
   
df = df[df['Date'] >= '2022-12-01'].reset_index(drop=True)
print(df.head(3))
print(f'\nThe date range: {df.Date.min()}/{ df.Date.max()}')

Çıktı:

Date     CAD     NZD     USD
0  2023-01-27  1.4479  1.6759  1.0865
1  2023-01-26  1.4568  1.6799  1.0895
2  2023-01-25  1.4544  1.6792  1.0878

The date range: 2022-12-01/2023-01-27

Tarih/zaman dizgelerini datetime nesnelerine dönüştürme

Zaman serileriyle verimli çalışmak için tarih veya zaman dizgelerini pandas.to_datetime işlevini kullanarak datetime nesnelerine dönüştürmemiz gerekir:

df['Date'] = pd.to_datetime(df['Date'])
print(df['Date'].dtypes)

Çıktı:

datetime64[ns]

Python’da zaman serileriyle çalışma konusunda kısa bir hatırlatmaya ihtiyacınız varsa, Manipulating Time Series Data in Python kursu faydalı olabilir.

Datetime sütununu dataframe indeksi olarak ayarlama

Şimdi, Date sütununu set_index yöntemiyle dataframe indeksi olarak ayarlayalım:

df = df.set_index('Date')
print(df.head(3))

Çıktı:

              CAD     NZD     USD
Date                             
2023-01-27  1.4479  1.6759  1.0865
2023-01-26  1.4568  1.6799  1.0895
2023-01-25  1.4544  1.6792  1.0878

Temel tek çizgili matplotlib zaman serisi grafiği oluşturma

Basit bir zaman serisi çizgi grafiği oluşturmak için standart matplotlib.pyplot.plot(x, y) yöntemini kullanırız:

plt.plot(df.index, df['CAD'])

Çıktı:

image1.png

Birden çok çizgili matplotlib zaman serisi grafiği oluşturma

Birden çok çizgili zaman serisi grafiği oluşturmak için matplotlib.pyplot.plot(x, y) yöntemini gerekli sayıda çalıştırmamız yeterlidir: 

plt.plot(df.index, df['CAD'])
plt.plot(df.index, df['NZD'])
plt.plot(df.index, df['USD'])

image4.png

Yukarıdaki kodu for döngüsü kullanarak optimize edebiliriz:

for col in ['CAD', 'NZD', 'USD']:
    plt.plot(df.index, df[col])

Çıktı: 

image4.png

Matplotlib zaman serisi grafiklerini özelleştirme

Zaman serisi çizgi grafiğimizi daha okunabilir ve etkileyici kılmak için özelleştirmemiz gerekir. Şekil boyutunu ayarlama, grafik başlığı ve eksen etiketleri ekleme ve özelleştirme, çizgi özelliklerini değiştirme, işaretleyiciler ekleme ve özelleştirme gibi yaygın matplotlib ayarlamalarını uygulayabiliriz. Bazı ayarlar ise zaman serisi çizgi grafikleri için özeldir; örneğin zaman ekseni tiklerini ve etiketlerini özelleştirme veya belirli zaman aralıklarını vurgulama.

Şekli ve eksenleri özelleştirme

Standart matplotlib yöntemlerini kullanarak, aşağıdaki kod yorumlarında açıklandığı gibi, bir zaman serisi çizgi grafiğinin şeklini ve eksenlerini birçok yönden özelleştirebiliriz:

# Adjusting the figure size
fig = plt.subplots(figsize=(16, 5))

# Creating a plot
plt.plot(df.index, df['CAD'])

# Adding a plot title and customizing its font size
plt.title('EUR-CAD rate', fontsize=20)

# Adding axis labels and customizing their font size
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)

# Rotaing axis ticks and customizing their font size
plt.xticks(rotation=30, fontsize=15)

# Changing the plot resolution - zooming in the period from 15.12.2022 till 15.01.2023
plt.xlim(pd.Timestamp('2022-12-15'), pd.Timestamp('2023-01-15'))

Çıktı: 

image8.png

Çizgi özelliklerini özelleştirme

Diğer çizgi grafiklerde olduğu gibi, zaman serisi çizgi grafiğinin çizgi rengi, stili veya kalınlığı gibi çizgi özelliklerini değiştirmek mümkündür:

plt.plot(df.index, df['CAD'], color='green', linestyle='dashed', linewidth=3)

Çıktı:

image5.png

İşaretleyiciler ekleme ve özelleştirme

Her çizgi grafikte olduğu gibi, zaman serisi çizgi grafiğine işaretleyiciler yerleştirebilir ve simgesini, rengini, kenar rengini ve boyutunu özelleştirebiliriz:

plt.plot(df.index, df['CAD'], marker='o', markerfacecolor='yellow', markeredgecolor='red', markersize=8)

image9.png

Zaman ekseni tiklerini özelleştirme

Önce, bazı temel özelleştirmelerle basit bir matplotlib zaman serisi çizgi grafiği oluşturalım:

fig = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())

Çıktı: 

image7.png

Varsayılan olarak matplotlib’in, etiketleriyle birlikte bazı rastgele tikler gösterdiğini görüyoruz. Ancak zaman ekseninde hangi tiklerin görüneceğini kontrol etmek isteyebiliriz. Bu durumda, gerekli tarihleri (veya zamanları) dizge ya da pandas timestamp olarak matplotlib.pyplot.xticks yöntemine bir liste halinde sağlamamız gerekir:

fig = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())

# Defining and displaying time axis ticks
ticks = ['2022-12-05', '2023-01-02', '2023-01-20']
plt.xticks(ticks)

Çıktı: 

image6.png

Yukarıda, matplotlib seçilen tikleri gösterdi ve bunları otomatik olarak etiketledi.

Eğer tüm tikleri göstermek istiyorsak, zaman serisinin indekslerinin bir listesini matplotlib.pyplot.xticks yöntemine sağlamalıyız:

fig = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())

# Defining and displaying all time axis ticks
ticks = list(df.index)
plt.xticks(ticks, rotation=45)

Çıktı: 

image2.png

Zaman ekseni tik etiketlerini özelleştirme

Yukarıdaki çizgi grafikte zaman ekseni tik etiketleri göz yorucu görünebilir. Daha okunabilir olmaları için biçimlendirmek isteyebiliriz. Bunun için matplotlib.dates.DateFormatter sınıfını kullanarak, tarihleri/zamanları nasıl görmek istediğimizi yansıtan bir strftime biçim dizgesi geçiririz. Ardından bu biçimlendiriciyi matplotlib.axis.XAxis.set_major_formatter yöntemine veririz:

fig, ax = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())
ticks = list(df.index)
plt.xticks(ticks, rotation=45)

# Formatting time axis tick labels
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b %d'))

Çıktı: 

image10.png

Bu dokümantasyon sayfası tüm olası strftime biçim kodlarının kapsamlı bir listesini sunar.

Belirli zaman aralıklarını vurgulama

Bazen, zaman serisi çizgi grafiğinde belirli zaman aralıklarını gölgelendirmek isteyebiliriz. Bunun için matplotlib.pyplot.axvspan yöntemini kullanabiliriz. Bu yöntem, ilgi duyulan dönemin başlangıç ve bitiş zaman noktalarını datetime biçiminde alan iki zorunlu argüman kabul eder. Ayrıca vurgulanan alanın görünümünü özelleştirmek için renk, kenar rengi, saydamlık, çizgi kalınlığı veya tarama deseni gibi bazı isteğe bağlı parametreler de alabilir.

Bu tekniği önceki bölümdeki grafiğe uygulayalım:

fig, ax = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())
ticks = list(df.index)
plt.xticks(ticks, rotation=45)
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b %d'))

# Highlighting the time period from 15.12.2022 to 1.01.2023 and customizing the shaded area
plt.axvspan(datetime(2022, 12, 15), datetime(2023, 1, 1), facecolor='yellow', alpha=0.5, hatch='/', edgecolor='red', linewidth=5)

Çıktı: 

image11.png

Bir matplotlib zaman serisi çizgi grafiğini dosyaya kaydetme

Bir zaman serisi çizgi grafiğini yalnızca görüntülemek yerine bir görsel dosyasına kaydetmeyi tercih edebiliriz. Bunu yapmak için, dosya adını geçirerek matplotlib.pyplot.savefig yöntemini kullanırız. Örneğin, ilk temel grafiğimize dönelim:

plt.plot(df.index, df['CAD'])

# Saving the resulting plot to a file
plt.savefig('time series line plot.png')

image1.png

Yukarıda, grafiği time series line plot.png adlı ve mevcut programımızla aynı konumda bulunan bir dosyaya kaydettik.

Sonuç

Özetle, bu eğitimde zaman serisi çizgi grafiklerini matplotlib ile nasıl oluşturup özelleştireceğimizi; hem genel matplotlib yöntemlerini hem de yalnızca zaman serisi görselleştirmelerine özgü daha gelişmiş yöntemleri kullanarak ele aldık.

Bu temel teknikleri öğrendikten sonra, Python’da zaman serisi verileriyle çalışma ve görselleştirme konusuna daha derinlemesine dalmak isteyebilirsiniz. Bu durumda, aşağıdaki kapsamlı, yeni başlayan dostu ve uçtan uca kaynakları incelemeyi düşünün:

Konular
Python
Veri Görselleştirme

Python Kursları

Kurs

Matplotlib ile Veri Görselleştirmeye Giriş

4 sa
236.9K
Matplotlib kullanarak veri görselleştirmeleri oluşturmayı, özelleştirmeyi ve paylaşmayı öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör