Bu adım adım rehberde Gantt grafiğinin ne olduğunu, bu tür görselleştirmelerin neden ve ne zaman yararlı olduğunu, matplotlib ile Python’da Gantt grafiğinin nasıl yapılacağını ve nasıl özelleştirilebileceğini ele alacağız. Yol boyunca, matplotlib’de bazı Gantt grafiği örnekleri de oluşturacağız.
Gantt Grafiği Nedir ve Neden Faydalıdır?
Gantt grafiği, kapsamlı bir proje planlama ve yönetim takvimini görselleştirmek için kullanılan bir çubuk grafik türüdür. Genellikle proje görev adları, bu görevlerin başlangıç ve bitiş tarihleri, görevlerin atandığı ekipler, görevin tamamlanma durumu (yüzde veya kesir cinsinden), ekip performansı ve projenin önemli kilometre taşları gibi öğeleri gösterir.
Görev adları Gantt grafiğinin y ekseni boyunca, genellikle başlangıç tarihlerine göre yukarıdan aşağıya kronolojik sırayla düzenlenir. X ekseni ise zaman aralıklarını gösterir; her çubuğun genişliği, ilgili görevin uygulanma süresine karşılık gelir.
Gantt grafiği esasen yatay bir çubuk grafiğinin özel bir biçimi olduğundan, matplotlib, Plotly, Bokeh ve Altair dahil olmak üzere birçok Python veri görselleştirme kütüphanesinde oluşturulabilir. Bu derste en popüler olanına – matplotlib’e – odaklanacağız.
Matplotlib ile Python’da Gantt Grafiği Nasıl Yapılır
barh() kullanarak
Önce, matplotlib.pyplot’ın barh() yöntemini kullanarak temel bir matplotlib Gantt grafiği oluşturalım.
İlk olarak gerekli kütüphaneleri indirmemiz gerekiyor:
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import datetime as dtAltyapı:
Bir sonraki adım, üzerinde çalışmak için örnek veriler oluşturmaktır:
df = pd.DataFrame({'task':['A','B','C','D','E','F','G','H','I','J','K','L'],'team':['R&D','Accounting','Sales','Sales','IT','R&D','IT','Sales','Accounting','Accounting','Sales','IT'],'start': pd.to_datetime(['20 Oct 2022','24 Oct 2022','26 Oct 2022','31 Oct 2022','3 Nov 2022','7 Nov 2022','10 Nov 2022','14 Nov 2022','18 Nov 2022','23 Nov 2022','28 Nov 2022','30 Nov 2022']),'end': pd.to_datetime(['31 Oct 2022','28 Oct 2022','31 Oct 2022','8 Nov 2022','9 Nov 2022','18 Nov 2022','17 Nov 2022','22 Nov 2022','23 Nov 2022','1 Dec 2022','5 Dec 2022','5 Dec 2022']),'completion_frac':[1,1,1,1,1,0.95,0.7,0.35,0.1,0,0,0]})print(df)Altyapı:
Çıktı:
task team start end completion_frac
0 A R&D 2022-10-202022-10-311.001 B Accounting 2022-10-242022-10-281.002 C Sales 2022-10-262022-10-311.003 D Sales 2022-10-312022-11-081.004 E IT 2022-11-032022-11-091.005 F R&D 2022-11-072022-11-180.956 G IT 2022-11-102022-11-170.707 H Sales 2022-11-142022-11-220.358 I Accounting 2022-11-182022-11-230.109 J Accounting 2022-11-232022-12-010.0010 K Sales 2022-11-282022-12-050.0011 L IT 2022-11-302022-12-050.00Altyapı:
Bu veriler için bir Gantt grafiği oluşturmayı kolaylaştırmak üzere, aşağıdaki bilgileri temsil edecek dört sütun daha hesaplamamız gerekiyor:
Her görev için genel proje başlangıcından başlangıç tarihine kadar geçen/geçecek gün sayısı:
task team start end completion_frac days_to_start \
0 A R&D 2022-10-202022-10-311.0001 B Accounting 2022-10-242022-10-281.0042 C Sales 2022-10-262022-10-311.0063 D Sales 2022-10-312022-11-081.00114 E IT 2022-11-032022-11-091.00145 F R&D 2022-11-072022-11-180.95186 G IT 2022-11-102022-11-170.70217 H Sales 2022-11-142022-11-220.35258 I Accounting 2022-11-182022-11-230.10299 J Accounting 2022-11-232022-12-010.003410 K Sales 2022-11-282022-12-050.003911 L IT 2022-11-302022-12-050.0041
days_to_end task_duration completion_days
0111212.001855.0021166.0031999.0042077.005291211.4062885.6073393.1583460.6094290.00104680.00114660.00Altyapı:
Artık matplotlib’te temel bir Gantt grafiği oluşturmaya hazırız:
Yukarıdaki grafikten en fazla bilgiyi alabilmemiz için epeyce ayar gerekiyor:
Anlamlı bir başlık ve x-etiketleri (tarihler) ekleme
Y eksenini ters çevirerek tüm görevleri yukarıdan aşağıya kronolojik sıraya koyma
Izgara ekleme
Görevleri ekibe göre renklendirme
Açıklama kutusu (legend) gösterme
Görev tamamlanma durumunu ekleme
Bu iyileştirmelerin hepsini birazdan uygulayacağız. Ancak önce temel bir Gantt grafiği oluşturmanın diğer bir yoluna bakalım.
broken_barh() kullanarak
Bazı görevler zaman içinde iki veya daha fazla alt göreve yayılıyorsa başka bir matplotlib yöntemi – broken_barh() – kullanmalıyız.
Bu yaklaşımı denemek için bir miktar örnek veri elde etmek adına şunları yapalım:
İlk veri çerçevemizden yalnızca Satış ekibine atanan görevleri alın (şimdilik completion_frac sütununu yok sayalım).
start ve end sütunlarının adlarını sırasıyla start_1 ve end_1 olarak değiştirin (kolaylık için).
Bazı mevcut görevlere daha fazla alt görev ekleyin.
Her alt görev için, yukarıda gösterildiği gibi aşağıdaki bilgileri temsil eden üç sütunu hesaplayın:
Her alt görevin başlangıç tarihine genel proje başlangıcından kaç gün geçti/geçecek.
Her alt görevin bitiş tarihine genel proje başlangıcından kaç gün geçti/geçecek.
Başlangıç ve bitiş tarihlerini de kapsayan her alt görevin süresi.
# 1
df2 = df[df['team']=='Sales'][['task','team','start','end']]# 2
df2.rename(columns={'start':'start_1','end':'end_1'}, inplace=True)
df2.reset_index(drop=True, inplace=True)# 3
df2['start_2']= pd.to_datetime([None,'10 Nov 2022','25 Nov 2022',None])
df2['end_2']= pd.to_datetime([None,'14 Nov 2022','28 Nov 2022',None])
df2['start_3']= pd.to_datetime([None,None,'1 Dec 2022',None])
df2['end_3']= pd.to_datetime([None,None,'5 Dec 2022',None])# 4for i in[1,2,3]:
suffix ='_'+str(i)
df2['days_to_start'+ suffix]=(df2['start'+ suffix]- df2['start_1'].min()).dt.days
df2['days_to_end'+ suffix]=(df2['end'+ suffix]- df2['start_1'].min()).dt.days
df2['task_duration'+ suffix]= df2['days_to_end'+ suffix]- df2['days_to_start'+ suffix]+1print(df2)Altyapı:
Çıktı:
task team start_1 end_1 start_2 end_2 start_3 \
0 C Sales 2022-10-262022-10-31 NaT NaT NaT
1 D Sales 2022-10-312022-11-082022-11-102022-11-14 NaT
2 H Sales 2022-11-142022-11-222022-11-252022-11-282022-12-013 K Sales 2022-11-282022-12-05 NaT NaT NaT
end_3 days_to_start_1 days_to_end_1 task_duration_1 \
0 NaT 0561 NaT 513922022-12-05192793 NaT 33408
days_to_start_2 days_to_end_2 task_duration_2 days_to_start_3 \
0 NaN NaN NaN NaN
115.019.05.0 NaN
230.033.04.036.03 NaN NaN NaN NaN
days_to_end_3 task_duration_3
0 NaN NaN
1 NaN NaN
240.05.03 NaN NaN Altyapı:
Artık D görevinin iki, H görevinin üç alt görevi, C ve K görevlerinin ise birer alt görevi olduğunu unutmayın. Dolayısıyla broken_barh() yöntemini D ve H görevleri için uygulayacağız. Bu yöntemin sözdizimi barh()’a kıyasla biraz daha az sezgiseldir; bu yüzden ana parametrelerine ve biçimlerine bakalım. broken_barh() yönteminin zorunlu parametreleri şunlardır:
xranges – her biri (xmin, xwidth) biçiminde olan demetler dizisi; her çubuğun başlangıcını ve uzunluğunu belirtir. Burada her çubuk bir alt görevi temsil eder. Bu parametre, her alt görevin başlangıç tarihini ve süresini gösterir.
yrange – (ymin, yheight) biçiminde bir demet; her çubuk için y konumunu ve yüksekliğini belirtir.
Şimdi “kırık” Gantt grafiğimizi çizelim. Algoritma şöyledir:
Alt grafikli bir figür oluşturun.
Veri çerçevesinin satırlarını yineleyin ve görevin bir, iki veya üç alt görevi olup olmadığını kontrol edin. Buna bağlı olarak şunları yapın:
Bir alt görev: daha önce yaptığımız gibi barh() yöntemiyle bir çubuk çizin.
İki alt görev: broken_barh() yöntemiyle iki çubuk çizin.
Üç alt görev: broken_barh() yöntemiyle üç çubuk çizin.
Temel ayarları ekleyin: y ekseninin işaretlerini belirleyin ve etiketleyin.
Yukarıdaki kodda, yalnızca bir alt görevi olan görevlerin çubuklarını çizmek için de aslında broken_barh() yöntemini kullanabiliriz. Bu durumda, şu kod satırını:
task team start end completion_frac days_to_start \
0 A R&D 2022-10-202022-10-311.0001 B Accounting 2022-10-242022-10-281.0042 C Sales 2022-10-262022-10-311.0063 D Sales 2022-10-312022-11-081.00114 E IT 2022-11-032022-11-091.00145 F R&D 2022-11-072022-11-180.95186 G IT 2022-11-102022-11-170.70217 H Sales 2022-11-142022-11-220.35258 I Accounting 2022-11-182022-11-230.10299 J Accounting 2022-11-232022-12-010.003410 K Sales 2022-11-282022-12-050.003911 L IT 2022-11-302022-12-050.0041
days_to_end task_duration completion_days
0111212.001855.0021166.0031999.0042077.005291211.4062885.6073393.1583460.6094290.00104680.00114660.00Altyapı:
Yukarıdaki Gantt grafiği örneğinde eksik olan şey, hangi rengin hangi ekibe karşılık geldiğini gösteren bir açıklama kutusu. Bunu düzeltmek için, önceden tanımlanmış bir renkle doldurulan matplotlib 2D sanatçı nesneleri olan yamalar (patch) oluşturalım. Her ekip için birer tane olacak şekilde, ilgili renkte yamalar listesi üretmek üzere matplotlib.patches.Patch sınıfını kullanacağız:
patches =[]for team in team_colors:
patches.append(matplotlib.patches.Patch(color=team_colors[team]))Altyapı:
Artık grafiğimize bir açıklama kutusu eklemeye hazırız:
Şimdiye kadar, bu dersin başında hesapladığımız completion_days column sütununu kullanmadık. Şimdi, her görevin tamamlanma aşamasının ne olduğunu göstererek Gantt grafiğimizi daha içgörülü hale getirmek için bunu kullanacağız.
Teknik olarak yapacağımız şey, halihazırda oluşturduğumuz her çubuğun üzerine bir çubuk daha eklemek. Alt çubuk, her görevin ayrılan günlerdeki toplam süresini temsil ederken, üst çubuk o görevin ayrılan günlerdeki tamamlanma durumuna karşılık gelecek.
Her görev için her iki çubuk da ilgili ekiple ilişkili aynı renkte olacak, ancak aralarındaki farkı görebilmek için alt çubuk üsttekinden daha açık olacaktır.
Başka bir deyişle, bir ekip bir görevde beklenenin üzerinde performans gösteriyorsa, bu iki çubuğun birleşimi, ekibin o görevde beklenenden daha fazla gün çalışmış gibi görünecektir (bu da muhtemelen görevin son teslim tarihinden önce tamamlanacağı anlamına gelir).
Tersine, bir ekip bir görevde beklenenin altında performans gösteriyorsa, ilgili çubukların birleşimi, ekibin o görevde beklenenden daha az gün çalışmış gibi görünecektir (bu da muhtemelen görevin son teslim tarihinden sonra tamamlanacağı anlamına gelir).
fig, ax = plt.subplots()for index, row in df.iterrows():# Adding a lower bar - for the overall task duration
plt.barh(y=row['task'], width=row['task_duration'], left=row['days_to_start']+1, color=team_colors[row['team']], alpha=0.4)# Adding an upper bar - for the status of completion
plt.barh(y=row['task'], width=row['completion_days'], left=row['days_to_start']+1, color=team_colors[row['team']])
plt.title('Project Management Schedule of Project X', fontsize=15)
plt.gca().invert_yaxis()
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels[::7])
ax.xaxis.grid(True, alpha=0.5)
ax.legend(handles=patches, labels=team_colors.keys(), fontsize=11)
plt.show()Altyapı:
Çıktı:
Yukarıdaki grafikten, ekiplerin görevlerini tamamlama hızlarının aynı olmadığını görebiliyoruz; bu, birçok gerçek dünya projesinde yaygın bir durumdur. Bu grafikten daha fazla bilgi almak için, bugünün tarihinin 17 Kasım 2022 olduğunu varsayalım ve bu tarihi grafiğimizde işaretleyelim:
fig, ax = plt.subplots()for index, row in df.iterrows():
plt.barh(y=row['task'], width=row['task_duration'], left=row['days_to_start']+1, color=team_colors[row['team']], alpha=0.4)
plt.barh(y=row['task'], width=row['completion_days'], left=row['days_to_start']+1, color=team_colors[row['team']])
plt.title('Project Management Schedule of Project X', fontsize=15)
plt.gca().invert_yaxis()
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels[::7])
ax.xaxis.grid(True, alpha=0.5)
ax.legend(handles=patches, labels=team_colors.keys(), fontsize=11)# Marking the current date on the chart
ax.axvline(x=29, color='r', linestyle='dashed')
ax.text(x=29.5, y=11.5, s='17/11', color='r')
plt.show()Altyapı:
Çıktı:
Project X’in mevcut durumu hakkında şu gözlemleri yapabiliriz:
Ar-Ge ekibi F Görevinde beklenenin üzerinde performans gösteriyor ve muhtemelen son teslim tarihinden önce tamamlayacak.
BT ekibi G Görevinde gecikmede ve muhtemelen desteğe ihtiyaç duyuyor.
Satış ekibi H Görevinde takvime uygun ilerliyor.
Muhasebe ekibi I Görevine proje takviminden önce başladı.
Bu tür gözlemler, ekip liderlerine ve proje yöneticisine proje takvimini buna göre ayarlamada ve gerekli kaynakları zamanında tahsis ederek teslimat gecikmelerini önlemede yardımcı olabilir.
Diğer Olası Ayarlar
Matplotlib Gantt grafiğimize daha fazla ayrıntı ekleyebiliriz. Örneğin:
Her çubuk üzerinde görev tamamlama yüzdesini ekleme.
Bazı görevleri alt görevlere ayırma (bunu teknik olarak bu derste daha önce tartıştık).
İlişkili görevleri anotasyonla belirtme.
Kritik kilometre taşlarını ve son teslim tarihlerini işaretleme.
Hafta sonlarını ve tatilleri vurgulama.
Çubukları ekibe veya görev türüne göre sıralama.
Bilgi ayrıntı düzeyini artırmak için x eksenine küçük işaretler ekleme.
Grafiğin genel biçimlendirme ve yerleşimini iyileştirme.
Ancak Gantt grafiğimizi sade tutmak ve çok fazla ayrıntıyla kalabalıklaştırmamak önemlidir. Diğer tüm veri görselleştirme türlerinde olduğu gibi, grafiğin bilgi kapasitesi ile okunabilirliği ve o grafiği oluşturmak için kullanılan kodun okunabilirliği arasında gerekli dengeyi korumalıyız.
Matplotlib ile Python’da Kendi Gantt Grafiğinizi Oluşturmaya Başlayın
Özetle, bu derste şunları inceledik:
Gantt grafiğinin ne olduğu
hangi tür bilgileri gösterdiği
ne zaman kullanıldığı
matplotlib ile Gantt grafiği oluşturmanın farklı yolları ve incelikleri
matplotlib ile Python’da Gantt grafiğinin nasıl yapılacağı
daha içgörü kazandırmak için nasıl daha fazla ayar yapılacağı
nihai sonucun nasıl yorumlanacağı.
Ek olarak, çeşitli Gantt grafiği örneklerine ve bunları adım adım oluşturma sürecine baktık.
Python’da etkileyici ve bilgilendirici grafikler oluşturmayı daha entegre bir yaklaşımla öğrenmek için Data Visualization with Python yetkinlik yolumuza göz atın.
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.
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!
Bu adım adım rehberde Gantt grafiğinin ne olduğunu, bu tür görselleştirmelerin neden ve ne zaman yararlı olduğunu, matplotlib ile Python’da Gantt grafiğinin nasıl yapılacağını ve nasıl özelleştirilebileceğini ele alacağız. Yol boyunca, matplotlib’de bazı Gantt grafiği örnekleri de oluşturacağız.
Gantt Grafiği Nedir ve Neden Faydalıdır?
Gantt grafiği, kapsamlı bir proje planlama ve yönetim takvimini görselleştirmek için kullanılan bir çubuk grafik türüdür. Genellikle proje görev adları, bu görevlerin başlangıç ve bitiş tarihleri, görevlerin atandığı ekipler, görevin tamamlanma durumu (yüzde veya kesir cinsinden), ekip performansı ve projenin önemli kilometre taşları gibi öğeleri gösterir.
Görev adları Gantt grafiğinin y ekseni boyunca, genellikle başlangıç tarihlerine göre yukarıdan aşağıya kronolojik sırayla düzenlenir. X ekseni ise zaman aralıklarını gösterir; her çubuğun genişliği, ilgili görevin uygulanma süresine karşılık gelir.
Gantt grafiği esasen yatay bir çubuk grafiğinin özel bir biçimi olduğundan, matplotlib, Plotly, Bokeh ve Altair dahil olmak üzere birçok Python veri görselleştirme kütüphanesinde oluşturulabilir. Bu derste en popüler olanına – matplotlib’e – odaklanacağız.
Python’da Gantt grafiği ve diğer türde grafikler oluşturmanın alternatif yollarını keşfetmek isterseniz, Introduction to Data Visualization with Plotly in Python kursuna göz atabilirsiniz. Matplotlib becerilerinizi tazelemeniz veya geliştirmeniz gerekiyorsa şu kurslar faydalı olacaktır: Introduction to Data Visualization with Matplotlib ve Python for MATLAB Users.
Matplotlib ile Python’da Gantt Grafiği Nasıl Yapılır
barh() kullanarak
Önce,
matplotlib.pyplot’ınbarh()yöntemini kullanarak temel bir matplotlib Gantt grafiği oluşturalım.İlk olarak gerekli kütüphaneleri indirmemiz gerekiyor:
Bir sonraki adım, üzerinde çalışmak için örnek veriler oluşturmaktır:
Çıktı:
Bu veriler için bir Gantt grafiği oluşturmayı kolaylaştırmak üzere, aşağıdaki bilgileri temsil edecek dört sütun daha hesaplamamız gerekiyor:
Ne elde ettiğimizi kontrol edelim:
Çıktı:
Artık matplotlib’te temel bir Gantt grafiği oluşturmaya hazırız:
Çıktı:
Yukarıdaki grafikten en fazla bilgiyi alabilmemiz için epeyce ayar gerekiyor:
Bu iyileştirmelerin hepsini birazdan uygulayacağız. Ancak önce temel bir Gantt grafiği oluşturmanın diğer bir yoluna bakalım.
broken_barh()kullanarakBazı görevler zaman içinde iki veya daha fazla alt göreve yayılıyorsa başka bir matplotlib yöntemi –
broken_barh()– kullanmalıyız.Bu yaklaşımı denemek için bir miktar örnek veri elde etmek adına şunları yapalım:
completion_fracsütununu yok sayalım).startveendsütunlarının adlarını sırasıylastart_1veend_1olarak değiştirin (kolaylık için).Çıktı:
Artık D görevinin iki, H görevinin üç alt görevi, C ve K görevlerinin ise birer alt görevi olduğunu unutmayın. Dolayısıyla
broken_barh()yöntemini D ve H görevleri için uygulayacağız. Bu yöntemin sözdizimibarh()’a kıyasla biraz daha az sezgiseldir; bu yüzden ana parametrelerine ve biçimlerine bakalım.broken_barh()yönteminin zorunlu parametreleri şunlardır:xranges– her biri (xmin,xwidth) biçiminde olan demetler dizisi; her çubuğun başlangıcını ve uzunluğunu belirtir. Burada her çubuk bir alt görevi temsil eder. Bu parametre, her alt görevin başlangıç tarihini ve süresini gösterir.yrange– (ymin,yheight) biçiminde bir demet; her çubuk için y konumunu ve yüksekliğini belirtir.Şimdi “kırık” Gantt grafiğimizi çizelim. Algoritma şöyledir:
barh()yöntemiyle bir çubuk çizin.broken_barh()yöntemiyle iki çubuk çizin.broken_barh()yöntemiyle üç çubuk çizin.Çıktı:
Yukarıdaki kodda, yalnızca bir alt görevi olan görevlerin çubuklarını çizmek için de aslında
broken_barh()yöntemini kullanabiliriz. Bu durumda, şu kod satırını:şununla değiştirmemiz gerekir:
Bu yaklaşım kodumuzu daha tutarlı ve okunabilir hale getirir.
Matplotlib’te Bir Gantt Grafiği Nasıl Özelleştirilir
İlk veri çerçevemize geri dönelim:
Çıktı:
ve ilk Gantt grafiğimize:
Çıktı:
Özellikle, bu grafiğe daha fazla içgörü kazandırmak için bazı özelleştirmeler eklemek istiyoruz.
Matplotlib ile grafik özelleştirmeyi daha derinlemesine incelemek için şu kaynaklara göz atın: Matplotlib Tutorial: Python Plotting ve Matplotlib Cheat Sheet: Plotting in Python.
Temel Gantt Grafiği Ayarları
Bunlar şunları içerir:
Grafiğe başlık ekleme
Gantt grafiği de dahil olmak üzere her grafik için anlamlı bir başlık şarttır. Projemizin adının Project X olduğunu varsayalım:
Çıktı:
Eksenleri ayarlama ve özelleştirme ile ızgara ekleme
Bu adımda, önceki kodun üzerine inşa ederek aşağıdaki işlemleri gerçekleştireceğiz:
axnesnesiyle çalışabilmek için alt grafikli bir figür oluşturun.Çıktı:
Her türlü Python kodunu kolayca yazıp okuyabilmek için daha fazla pratiğe ihtiyacınız varsa, Intermediate Python kursumuz iyi bir referans noktasıdır.
Görevleri Ekibe Göre Renklendirme
Şimdi, her çubuğu (belirli bir görevi temsil eden) o görevin atandığı ekibe göre renklendirelim. Bunun için şunları yapacağız:
Çıktı:
Açıklama Kutusu (Legend) Ekleme
Yukarıdaki Gantt grafiği örneğinde eksik olan şey, hangi rengin hangi ekibe karşılık geldiğini gösteren bir açıklama kutusu. Bunu düzeltmek için, önceden tanımlanmış bir renkle doldurulan matplotlib 2D sanatçı nesneleri olan yamalar (patch) oluşturalım. Her ekip için birer tane olacak şekilde, ilgili renkte yamalar listesi üretmek üzere matplotlib.patches.Patch sınıfını kullanacağız:
Artık grafiğimize bir açıklama kutusu eklemeye hazırız:
Çıktı:
Yukarıdaki Gantt grafiği örneği çok daha bilgilendirici görünüyor.
Grafiklerin estetiğini ve okunabilirliğini artırmaya yönelik daha fazla tekniği Improving Your Data Visualizations in Python kursunda bulabilirsiniz.
Tamamlanma Durumu Ekleme
Şimdiye kadar, bu dersin başında hesapladığımız
completion_days columnsütununu kullanmadık. Şimdi, her görevin tamamlanma aşamasının ne olduğunu göstererek Gantt grafiğimizi daha içgörülü hale getirmek için bunu kullanacağız.Teknik olarak yapacağımız şey, halihazırda oluşturduğumuz her çubuğun üzerine bir çubuk daha eklemek. Alt çubuk, her görevin ayrılan günlerdeki toplam süresini temsil ederken, üst çubuk o görevin ayrılan günlerdeki tamamlanma durumuna karşılık gelecek.
Her görev için her iki çubuk da ilgili ekiple ilişkili aynı renkte olacak, ancak aralarındaki farkı görebilmek için alt çubuk üsttekinden daha açık olacaktır.
Başka bir deyişle, bir ekip bir görevde beklenenin üzerinde performans gösteriyorsa, bu iki çubuğun birleşimi, ekibin o görevde beklenenden daha fazla gün çalışmış gibi görünecektir (bu da muhtemelen görevin son teslim tarihinden önce tamamlanacağı anlamına gelir).
Tersine, bir ekip bir görevde beklenenin altında performans gösteriyorsa, ilgili çubukların birleşimi, ekibin o görevde beklenenden daha az gün çalışmış gibi görünecektir (bu da muhtemelen görevin son teslim tarihinden sonra tamamlanacağı anlamına gelir).
Çıktı:
Yukarıdaki grafikten, ekiplerin görevlerini tamamlama hızlarının aynı olmadığını görebiliyoruz; bu, birçok gerçek dünya projesinde yaygın bir durumdur. Bu grafikten daha fazla bilgi almak için, bugünün tarihinin 17 Kasım 2022 olduğunu varsayalım ve bu tarihi grafiğimizde işaretleyelim:
Çıktı:
Project X’in mevcut durumu hakkında şu gözlemleri yapabiliriz:
Bu tür gözlemler, ekip liderlerine ve proje yöneticisine proje takvimini buna göre ayarlamada ve gerekli kaynakları zamanında tahsis ederek teslimat gecikmelerini önlemede yardımcı olabilir.
Diğer Olası Ayarlar
Matplotlib Gantt grafiğimize daha fazla ayrıntı ekleyebiliriz. Örneğin:
Ancak Gantt grafiğimizi sade tutmak ve çok fazla ayrıntıyla kalabalıklaştırmamak önemlidir. Diğer tüm veri görselleştirme türlerinde olduğu gibi, grafiğin bilgi kapasitesi ile okunabilirliği ve o grafiği oluşturmak için kullanılan kodun okunabilirliği arasında gerekli dengeyi korumalıyız.
Matplotlib ile Python’da Kendi Gantt Grafiğinizi Oluşturmaya Başlayın
Özetle, bu derste şunları inceledik:
Ek olarak, çeşitli Gantt grafiği örneklerine ve bunları adım adım oluşturma sürecine baktık.
Python’da etkileyici ve bilgilendirici grafikler oluşturmayı daha entegre bir yaklaşımla öğrenmek için Data Visualization with Python yetkinlik yolumuza göz atın.