Python ile veriden basit grafik oluşturma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

JDH

Seçkin Üye
Katılım
29 Kas 2016
Mesajlar
484
Çözümler
9
Tepki puanı
65
Ödüller
7
9 HİZMET YILI
Öncelikle merhaba bu konuda benim de yeni öğrendiğim grafik oluşturmayı basit bir şekilde kullanmayı anlatacağım.
Ben PyCharm -benim için en rahat IDE- üzerinden yapacağım.
:yazı:
Kod:
Ben veriler.xlsx belgeme [B][URL='https://covid19.saglik.gov.tr/TR-66935/genel-koronavirus-tablosu.html']buradan[/URL] [/B]1-22 Aralık arası aldığım verileri ekledim.
[ATTACH type="full" alt="resim_2020-12-23_170633.png"]56851[/ATTACH][/CENTER]
[CODE=python sütunundaki değerleri string olarak değiştirdim.
veriler["Toplam Vaka Sayısı"] = veriler["Toplam Vaka Sayısı"].astype(int) # içeriğini okuttuğum veriler dosyasından "Toplam Vaka Sayısı" sütunundaki değerleri int olarak değiştirdim.

# artık "veriler" listemdeki sütunları ayrı listelere aktaracağım
labels, values = [], [] # 2 yeni liste oluşturdum

# labels listeme tarihleri ekliyorum.
for i in veriler["Tarih"]:
    labels.append(i)
# values listeme toplam vaka sayılarını ekliyorum.
for i in veriler["Toplam Vaka Sayısı"]:
    values.append(i)

# değerler yukarıdan aşağı yani ters bir şekilde eklendiği için listelerdeki sıralamayı tam tersine çeviriyorum
labels.reverse()
values.reverse()
Şimdi ise asıl kısıma geçebiliriz.​
Kod:
) # grafiğin genişliğini buradan ayarlayacağız. figsize[0] = genişlik, figsize[1] = uzunluk. ben 20, 10 yaptım 2000x1000'e denk geliyor.
    plt.style.use("bmh") # yazarak grafiğin görünüşünü değiştiriyorum çünkü standart olan halinde arkada çizgiler yok.
    plt.rcParams["axes.formatter.limits"] = 0, 100 # yazıyorum çünkü asıl halinde -5, 6'dır ve uzun sayı değerleri 1e6 şeklinde yazılıyor hoş gözükmediği için bu şekilde uzun yazmaya ayarlıyorum.
    # istersek plt.rcParams["axes.formatter.use_mathtext"] = True yazarak ve üsttekini yazmayarak x10⁶ gibi görünüm de elde edebiliriz.
    plt.title("Grafik") # burada ise grafiğin üzerinde yazacak başlığı belirliyoruz
    # plt.gcf().set_size_inches(int(len(labels[0]) * 1.2 + 20), plt.gcf().get_size_inches()[1]) # bu ise x ekseninde yazacağımız tarihler arasındaki boşluğu belirlememize yarıyor ama önceden ayarladığımız grafik genişliğini değiştirebilir (uzun bir grafik oluşturmuyorsanız gerekli değil.).
    plt.xlabel("TARİHLER") # bu şekilde x ekseninin başlığını belirliyoruz, altında yazacak olan.
    plt.ylabel("SAYI") # aynı şekilde y ekseninin başlığını belirliyoruz. y eksenindeki başlık dik bir şekilde yazdığı için istersek rotation=0 parametresini ekleyebiliriz.
    plt.xticks(rotation=65) # yazarak tarihlerin biraz daha rahat okunması için x eksenindeki değerleri döndürüyoruz.
    # eğer lejant oluşturmak istersek plt.legend(loc=0) yazarak otomatik olarak oluşturmasını sağlayabiliriz. loc=0 en iyi konum anlamına geliyor.
    plt.tight_layout() # yazarak oluşacak grafiğin tam olarak boyutunu belirlediğimiz tuvale tam olarak oturmasınız sağlıyoruz. (gerekli değil)
    plt.plot(labels, values, "b", linewidth=3, label="Toplam Vaka Sayısı", marker="o") # ve bununla birlikte grafiğimize çizgiyi ekliyoruz. sırasıyla 1. parametre x eksenindekiler 2. parametre y eksenindekiler 3. parametre çizgi rengi veya çizgi türü (b blue demek) 4. çizgi kalınlığı 5. parametre eğer lejant kullanırsak ayırt etmek için kullanılacak isim 6. parametre her değişim noktasında bulunacak işaret (o = daire)
    # plt.savefig("isim") ile .png olarak kaydedebiliriz.
    plt.show() # diyerek grafiğimizi gösteriyoruz
Python:
import matplotlib.pyplot as plt
import pandas as pd

veriler = pd.read_excel("veriler.xlsx")
veriler["Tarih"] = veriler["Tarih"].astype(str)
veriler["Toplam Vaka Sayısı"] = veriler["Toplam Vaka Sayısı"].astype(int)

labels, values = [], []

for i in veriler["Tarih"]:
    labels.append(i)
for i in veriler["Toplam Vaka Sayısı"]:
    values.append(i)

labels.reverse()
values.reverse()

if __name__ == "__main__":
    plt.figure(figsize=[20, 10])
    plt.style.use("bmh")
    plt.rcParams["axes.formatter.limits"] = 0, 100
    plt.title("Grafik")
    plt.xlabel("TARİHLER")
    plt.ylabel("SAYI")
    plt.xticks(rotation=65)
    plt.plot(labels, values, "b", linewidth=3, label="Toplam Vaka Sayısı", marker="o")
    plt.show()
:resim:
Son olarak şöyle bir sonuç alıyoruz.
resim_2020-12-23_174928.png

:not:
Bu fonksiyonları kullanmak için gerekli olan kütüphaneler:
matplotlib==3.3.2 pandas==1.1.5
Yüklemek için ise Anaconda veya Console'u açarak pip install kütüphaneadı yapabilirsiniz.
Eğer yanlış ve eksik anlattığım bir yer varsa lütfen doğrusuyla beraber uyarın.
 

Ekli dosyalar

  • resim_2020-12-23_170633.png
    resim_2020-12-23_170633.png
    29.5 KB · Görüntüleme: 76
Son düzenleme:
ÖLÜM ÖLÜM DEDİĞİN NEDİR Kİ GÜLÜM
Efsane Üye
Katılım
26 Şub 2016
Mesajlar
11,174
Çözümler
139
Tepki puanı
3,968
Ödüller
19
Yaş
27
10 HİZMET YILI
Bu yöntem normal grafik oluşturmaktan daha kolaymış eyvallah paylaşım için.
 
  • Like
Tepkiler: JDH
Onaylı Üye
Katılım
21 Ara 2020
Mesajlar
115
Tepki puanı
11
Ödüller
3
5 HİZMET YILI
Yararlı bi konu ve paylaşım teşekkür ederiz
 
Onaylı Üye
Katılım
23 Ara 2020
Mesajlar
53
Tepki puanı
0
Yaş
26
5 HİZMET YILI
Grafik tema ayarlaması vs yapabılırmıyız acaba sagol paylasım ıcın
 
Onaylı Üye
Katılım
26 Mar 2018
Mesajlar
77
Tepki puanı
27
Ödüller
8
Yaş
30
8 HİZMET YILI
Bu yöntem basitmiş, paylaşım için çok teşekkürler :)
 
Seçkin Üye
Katılım
10 Ocak 2019
Mesajlar
485
Çözümler
4
Tepki puanı
66
Ödüller
7
7 HİZMET YILI
Kodlama öğrenmeye başlamıştım işime yaradı teşekkürler.
 
her gün özlemle
Seçkin Üye
Katılım
15 Şub 2021
Mesajlar
353
Çözümler
1
Tepki puanı
22
Yaş
26
5 HİZMET YILI
Yararli paylasim emeğinize sağlık
 
En kötü savaş bildiğin ve hissettiğin arasındadır
Süper Üye
Katılım
1 Şub 2018
Mesajlar
674
Çözümler
11
Tepki puanı
71
Ödüller
9
Yaş
26
8 HİZMET YILI
Valla kral paylaşım çok iyi olmuş ya en basit en taktiksel halleri ile daha da hızlı yapabiliriz teşekkürler :)
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst