Last chance! 50% off DataCamp Premium
Sale ends in
Veri görselleştirme ve hikâyeleştirme, karmaşık veri içgörülerini etkili iletişim için ilgi çekici ve kolay anlaşılır anlatılara dönüştürdükleri için veri bilimciler açısından kritik öneme sahiptir. Yeni ve havalı kütüphaneler çıksa da Matplotlib hâlâ en popüler çizim kütüphanelerinden biridir ve yenilerinin temelini oluşturur.
Bu eğitim, Matplotlib grafiklerinin en yaygın türlerinden biri olan çizgi grafiğine odaklanır. Çizgi grafikleri, zaman içindeki eğilimleri ve dalgalanmaları net biçimde göstererek noktaları (kelimenin tam anlamıyla) birleştirip olup biteni canlı bir şekilde resmetmekte mükemmeldir.
Bu eğitim, basit bir çizgi grafiği oluşturmanın temelleriyle başlar ve ardından grafiklere istatistiksel bilgi eklemek gibi daha ileri tekniklere geçer. Eğitimin sonunda, Matplotlib’de farklı türlerde çizgi grafikleri oluşturmayı ve bunları veri içgörülerinizi başkalarına etkili bir şekilde aktarmak için nasıl kullanacağınızı sağlam biçimde kavramış olacaksınız.
Veri görselleştirme becerilerinizi geliştirmeye hazır mısınız? Hadi başlayalım!
Matplotlib ile çizgi grafikleri oluşturmaya başlamadan önce ortamımızı hazırlamamız gerekir. Bu, Matplotlib’in kurulmasını, gerekli kitaplıkların içe aktarılmasını ve örneklerde kullanacağımız veri kümesinin ön işlenmesini içerir.
Matplotlib’i kurmak için Python’un paket yükleyicisi olan pip’i kullanabilirsiniz. Bir terminal veya komut istemi açıp şunu yazmanız yeterlidir:
pip install matplotlib
Bu, bilgisayarınıza Matplotlib’in en güncel sürümünü kuracaktır.
Matplotlib kurulduktan sonra, NumPy ve Pandas gibi diğer gerekli kitaplıklarla birlikte içe aktarmalıyız. NumPy dizilerle çalışmak için, Pandas ise veri işleme ve analiz için kullanılır.
Bu kitaplıkları içe aktarmak için aşağıdaki kodu yazın:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
Bu eğitimde, DJIA endeksinin günlük fiyatlarını içeren bir veri kümesini kullanacağız. Veri kümesi beş sütun içerir:
Veri kümesini yükledikten sonra, sütunları yeniden adlandırma, datetime değişkenine dönüştürme ve veriyi tarihe göre artan sırada sıralama gibi bazı temel ön işleme adımları uygularız.
Yukarıdakilerin kodu şöyledir:
# Load the dataset into a Pandas DataFrame
df = pd.read_csv("HistoricalPrices.csv")
# Rename the column to remove an additional space
df = df.rename(columns = {' Open': 'Open', ' High': 'High', ' Low': 'Low', ' Close': 'Close'})
# Convert the date column to datetime
df['Date'] = pd.to_datetime(df['Date'])
# Sort the dataset in the ascending order of date
df = df.sort_values(by = 'Date')
Artık ortamı hazırlayıp veri kümesini yüklediğimize göre, Matplotlib kullanarak çizgi grafikleri oluşturmaya geçebiliriz.
Önce temel bir çizgi grafiği oluşturacak, ardından grafiği daha sunulabilir ve bilgilendirici hale getirmek için özelleştireceğiz.
Bir çizgi grafiği oluşturmak için plt.plot() fonksiyonunu kullanacağız. Bu fonksiyon iki parametre alır; x ekseni değerleri ve y ekseni değerleri. Bizim durumumuzda x ekseni değerleri tarih sütunu, y ekseni değerleri ise kapanış (close) sütunu olacaktır. Kod şu şekildedir:
# Extract the date and close price columns
dates = df['Date']
closing_price = df['Close']
# Create a line plot
plt.plot(dates, closing_price)
# Show the plot
plt.show()
Yukarıdaki kodu çalıştırdığınızda DJIA hissesinin temel bir çizgi grafiğini görmelisiniz.

Matplotlib, ihtiyaçlarımıza göre yararlanabileceğimiz pek çok özelleştirme sunar.
Varsayılan olarak plt.plot() fonksiyonu mavi bir çizgi çizer. Ancak fonksiyona bir color parametresi vererek çizgi rengini değiştirebilirsiniz. color parametresi, renk adını temsil eden bir dize veya onaltılık bir kod alabilir.
İşte bir örnek:
# Plot in Red colour
plt.plot(dates, closing_price, color='red')
# Show the plot
plt.show()
Bu kod, aşağıda gösterildiği gibi mavi yerine kırmızı bir çizgi çizecektir:

Kırmızı renkte temel çizgi grafiği
plt.plot() fonksiyonuna bir linewidth parametresi vererek çizgi kalınlığını da değiştirebilirsiniz. linewidth parametresi, çizginin kalınlığını temsil eden bir kayan noktalı değer alır.
İşte bir örnek:
# Increasing the linewidth
plt.plot(dates, closing_price, linewidth=3)
# Show the plot
plt.show()
Bu kod, varsayılan kalınlık yerine 3 genişliğinde bir çizgi çizecektir, aşağıda gösterildiği gibi:

Daha yüksek linewidth nedeniyle grafikte daha kalın çizgiler
plt.plot() fonksiyonuna bir linestyle parametresi vererek çizgi stilini değiştirebilirsiniz. linestyle parametresi, çizgi stilini temsil eden bir dize alır. Kullanılabilir stillerin kapsamlı bir listesi matplotlib belgelerinde mevcuttur.

Kodda bunların kullanımı şöyledir:
# Individually plot lines in solid, dotted, dashed and dashdot
plt.plot(dates, closing_price, linestyle='solid') # Default line style
plt.plot(dates, closing_price, linestyle='dotted')
plt.plot(dates, closing_price, linestyle='dashed')
plt.plot(dates, closing_price, linestyle='dashdot')
# Show the plot
plt.show()
İşaretleyiciler, çizgi grafikteki belirli noktaları vurgulamak için kullanılabilir. Farklı semboller işaretleyici olarak kullanılabilir ve matplotlib belgelerinden referans alınabilir.
İşte bir çizgi grafikte işaretleyici kullanmaya bir örnek:
# Add a cross marker for each point
plt.plot(df['Date'], df['Close'], marker='x')
# Show the plot
plt.show()
Yukarıdaki kodda, DJIA hissesinin Close fiyatlarını vurgulamak için çarpı (x) işaretleyicileri kullanıyoruz, aşağıda gösterildiği gibi:

Grafiği daha bilgilendirici hale getirmek için eksen etiketleri ve bir başlık ekleyebiliriz. Bunu sırasıyla plt.xlabel(), plt.ylabel() ve plt.title() fonksiyonlarını kullanarak yapabiliriz.
İşte bir örnek:
plt.plot(dates, closing_price, color='red', linewidth=2)
plt.xlabel('Date')
plt.ylabel('Closing Price')
plt.title('DJIA Stock Price')
# Show the plot
plt.show()
Bu kod, 2 kalınlığında kırmızı bir çizgi çizer; x ekseni ‘Date’, y ekseni ‘Closing Price’ olarak etiketlenir ve başlık ‘DJIA Stock Price’ olur.

Grafiğimizi daha okunaklı kılmak için ızgara çizgileri de ekleyebiliriz. Bunu plt.grid() fonksiyonunu kullanarak yapabiliriz. plt.grid() fonksiyonu, ızgaranın gösterilip gösterilmeyeceğini belirten bir boole değeri alır.
İşte bir örnek:
plt.plot(dates, closing_price, color='red', linewidth=2)
plt.xlabel('Date')
plt.ylabel('Closing Price')
plt.title('DJIA Stock Price')
# Add the grid
plt.grid(True)
# Show the plot
plt.show()
Grafikte ızgaraların eklendiğini görürsünüz:

Bazı durumlarda aynı grafikte birden fazla çizgi çizmek isteyebilirsiniz. Bunu yapmak için, her çağrıda farklı verilerle plt.plot() fonksiyonunu birden çok kez çağırabilirsiniz. İşte bir örnek:
# Line plot of Open and Close prices
plt.plot(df['Date'], df['Open'])
plt.plot(df['Date'], df['Close'])
plt.title('DJIA Open and Close Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()
Yukarıdaki kodda, DJIA hissesinin hem Open hem de Close fiyatlarını aynı grafikte çiziyoruz.

Bazen aynı grafikte farklı ölçeklere sahip iki değişkeni göstermek isteyebilirsiniz. Bu tür durumlarda, ikiz eksenler kullanmak, değişkenler arasındaki ilişkiyi bireysel ölçeklerin netliğini kaybetmeden görselleştirmenin etkili bir yoludur.
İkiz eksenli bir çizgi grafiği oluşturmak için twinx() fonksiyonunu kullanmamız gerekir. Bu fonksiyon, orijinal grafikle aynı x eksenini paylaşan yeni bir y ekseni oluşturur.
İşte bir örnek:
# Create a new variable for demonstration purposes
df['High_minus_Low'] = df['High'] - df['Low']
# Create a basic line plot for the Close prices
fig, ax1 = plt.subplots()
ax1.plot(df['Date'], df['Close'], color='blue', label='Close Price')
ax1.set_xlabel('Date')
ax1.set_ylabel('Closing Price', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
# Create a twin axis for the High_minus_Low variable
ax2 = ax1.twinx()
ax2.plot(df['Date'], df['High_minus_Low'], color='green', label='High - Low')
ax2.set_ylabel('High minus Low', color='green')
ax2.tick_params(axis='y', labelcolor='green')
# Add a title and show the plot
plt.title('DJIA Stock Price and High-Low Difference with Twin Axes')
plt.show()
Ve ikiz eksenli ortaya çıkan grafik:

Verideki eğilimleri ve desenleri görselleştirmenin yanı sıra, çizgi grafikleri regresyon çizgileri ve hata çubukları gibi istatistiksel bilgileri de gösterebilir.
Regresyon çizgisi, bir grafikteki veri noktalarına en iyi uyan çizgidir ve gelecekteki değerleri modellemek ve tahmin etmek için kullanılabilir. Veri noktalarımıza polinom regresyon çizgisi uyduran NumPy kitaplığındaki polyfit() fonksiyonunu kullanarak grafiklerimize bir regresyon çizgisi ekleyebiliriz.
import matplotlib.dates as mdates
# Convert Date column to numeric value
df['Date'] = mdates.date2num(df['Date'])
# Add regression line to plot
coefficients_open = np.polyfit(df['Date'], df['Open'], 1)
p_open = np.poly1d(coefficients_open)
coefficients_close = np.polyfit(df['Date'], df['Close'], 1)
p_close = np.poly1d(coefficients_close)
fig, ax = plt.subplots()
ax.plot(df['Date'], df['Open'], '.', label='Open Price')
ax.plot(df['Date'], p_open(df['Date']), '-', label='Open Regression Line')
ax.plot(df['Date'], df['Close'], '.', label='Close Price')
ax.plot(df['Date'], p_close(df['Date']), '-', label='Close Regression Line')
ax.set_title('DIJA Stock Prices')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend()
# Format x-axis labels as dates
date_form = mdates.DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_form)
plt.gcf().autofmt_xdate()
plt.show()
Bu kodda, önce date2num() fonksiyonunu kullanarak tarihleri sayısal değerlere dönüştürüyor, ardından regresyon çizgisi için katsayıları elde etmek üzere polyfit() fonksiyonunu kullanıyoruz. Çizgiyi çizdirmek için poly1d() fonksiyonunu kullanıyoruz. Orijinal veri noktalarını noktalarla, regresyon çizgisini ise düz bir çizgiyle çiziyoruz.

Hata çubukları, verinin değişkenliğinin grafiksel bir temsilidir ve ölçümlerdeki belirsizliği göstermek için kullanılabilir.
Bu, sıcaklık verisi, hava kalitesi verisi vb. gibi veri toplama sürecinde bazı hatalar beklediğiniz durumlarda özellikle faydalıdır. Hisse senedi fiyatlarından emin olsak da bir standart sapma büyüklüğünde potansiyel bir hata varsayalım ve bunu Matplotlib’deki errorbar fonksiyonunu kullanarak çizelim.
# Calculate standard deviation of data
std = df['Close'].std()
# Add error bars to plot
plt.errorbar(df['Date'], df['Close'], yerr=std/2, fmt='.', label='Close Price')
plt.title('DIJA Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
Bu kodda, önce veri kümemizdeki Close fiyatlarının standart sapmasını hesaplıyoruz. Ardından errorbar() fonksiyonunu kullanarak çizgi grafiğine hata çubukları ekliyoruz; hata çubuğu boyutunu standart sapmanın yarısı olacak şekilde ayarlıyoruz.

Bu teknikler, çizgi grafiklerimize istatistiksel bilgi eklememize ve verilerimiz hakkında daha derin içgörüler elde etmemize olanak tanır.
Çizgi grafikleri, verideki eğilimleri ve desenleri görselleştirmek için güçlü bir araçtır ve Matplotlib bunları oluşturmak için kullanıcı dostu bir arayüz sunar.
Bir sonraki adım olarak, öğrendiklerinizi bir hacker istatistikleri vaka çalışmasına uyguladığınız Orta Düzey Python kursumuzu takip etmek isteyebilirsiniz.
Umarız bu eğitim, Matplotlib’de çizgi grafikleri oluşturmaya başlamanıza yardımcı olmuştur. Ayrıca başka bir eğitimde diğer matplotlib grafiklerini de kapsamlı biçimde ele aldık; bu da Matplotlib ile başka neler yapabileceğinize kısa bir giriş sağlayabilir.
Verilerinizden içgörüleri ortaya çıkaran çarpıcı görselleştirmeler oluşturmayı keşfetmeye ve denemeye devam edin!
blog
Dario Radečić
15 dk.

blog
Abid Ali Awan
14 dk.
Eğitim
Adel Nehme
Eğitim
Kurtis Pykes
8 dk.