3. Grafikët dhe ngjyrat

Në këtë leksion ne demonstrojmë:

  1. një mënyrë tjetër për të lëvizur qelizat rreth një fJpyter notebook;
  2. si të vizualizoni të dhënat duke përdorur tabelat; dhe
  3. si të përdorni ngjyrat në grafikë.

3.1. Pak më shumë rreth Jupyter notebook

Ne kemi thënë në disa raste që secila Jupyter notebook është një sekuencë qelizash, dhe secila qelizë mund të përmbajë ndonjë tekst, një shprehje ose një program Python. Butonat në krye të faqes ju mundësojnë manipulimin e qelizave. Ne kemi përdorur tashmë butonat e mëposhtëm:

  • Run që drejton një qelizë,
  • dskette e cila kursen notebook,
  • + i cili shton një qelizë të re poshtë qelizës aktive, dhe
  • shigjetat lart dhe poshtë që lëvizin qelizën aktive.

Tre butonat e mëposhtëm:

Three more buttons

kryeni veprimet e zakonshme cut (presin qelizën nga notebook dhe mësojini përmendsh, butoni që duket si gërshërë), copy (lë qelizën në notebook, por memorizon një kopje të saj, butoni që duket si dy fletë letre) dhe paste ( vendosni qelizën e memorizuar, butonin që duket sikur vendosni një fletë letre në një copë dërrasë).

Nëse dëshironi lëvizni një qelizë:

  1. klikoni në qelizë,
  2. klikoni në butonin cut ("gërshërë") për të hequr qelizën nga notebook dhe për të memorizuar,
  3. klikoni diku tjetër në Jupyter notebook, dhe në fund
  4. klikoni në butonin paste ("vendosja e një fletë letre në një copë dërrasë") për të futur qelizën e memorizuar.

Ky operacion quhet shkurtimisht cut / paste.

Nëse dëshironi bëni një kopje të një qelize:

  1. klikoni në qelizë,
  2. klikoni në butonin copy ("dy fletë letre") për të mësuar përmendësh qelizën,
  3. klikoni diku tjetër në Jupyter notebook, dhe në fund
  4. klikoni në butonin paste ("vendosja e një fletë letre në një dosje") për të futur qelizën e memorizuar.

Ky operacion quhet shkurtimisht copy / paste.

3.2. Grafiku bar

Shpesh është më e përshtatshme të përfaqësosh të dhënat me një sekuencë të kolonave në vend të një linje të vazhdueshme. Listat e tilla quhen grafikët bar charts (për arsye të dukshme).

Le të importojmë së pari librarinë:

In [1]:
import matplotlib.pyplot as plt

Pas importit, libraria është në dispozicion në notebook dhe nuk ka nevojë të importohet përsëri. Sidoqoftë, importi ka të bëjë vetëm me këtë notebook.

Supozoni se këto janë shenjat e një studenti:

Subject Mark
Maths 2
English 4
Arts 5
History 3
PE 5
Music 4
Technology 5

Ne do t'i përfaqësojmë të dhënat për sa i përket dy listave si kjo:

In [2]:
subjects = ["Maths", "Eng", "Arts", "Hist", "PE", "Music", "Tech"]
marks    = [2,        4,     5,      3,      5,    4,       5    ]

Funksioni bar mund të thirret për të përfaqësuar këto të dhëna në formën e një tabelë bar:

In [3]:
plt.bar(subjects, marks)
plt.title("Marks of a student")
plt.show()
plt.close()

Nëse dëshironi të ndryshoni madhësinë e grafikut, ju mund të thërrisni funksionin figure me parametrin e tijfigureize si kjo:

In [4]:
plt.figure(figsize=(10,5))
plt.bar(subjects, marks)
plt.title("Marks of a student")
plt.show()
plt.close()

Libraria pyplot cakton ngjyra për të renditur mënyrën se si e gjen të përshtatshme. Nëse dëshirojmë të ndryshojmë ngjyrën e një tabele, thjesht mund të kërkojmë një ngjyrë tjetër, duke hedhur në parametrin "color" si më poshtë:

In [5]:
plt.figure(figsize=(10,5))
plt.bar(subjects, marks, color="g")
plt.title("Marks of a student")
plt.show()
plt.close()

Grafiku tani është jeshil ("g" = green). Ne kemi në dispozicion ngjyrat e mëposhtme:

Letter Color
"b" blue
"g" green
"r" red
"c" cyan
"m" magenta
"y" yellow
"k" black
"w" white

3.3. Displaying two sets of data on the same chart

"Temperatura normale e trupit" është në të vërtetë një interval i temperaturave që ndryshon me moshën e personit. Kur matet në sqetull intervalin e temperaturave që konsiderohet normale për një moshë, jepet kjo tabelë:

Age Temperature ($^\circ$C)
0--2 years 34.7--37.3
3--10 years 35.9--36.7
11--65 years 35.2--36.9
preko 65 years 35.6--36.2

Të dhënat mund të përfaqësohen si tre lista:

In [6]:
age        = ["0-2", "3-10", "11-65", "65+"]
normalT_lo = [34.7,  35.9,   35.2,    35.6]
normalT_hi = [37.3,  36.7,   36.9,    36.2]

Ne do ta vizualizojmë këtë situatë në të njëjtën grafik duke thirrur "bar" dy herë:

In [7]:
plt.bar(age, normalT_hi)
plt.bar(age, normalT_lo)
plt.title("Normal body temperature by age")
plt.xlabel("Age (years)")
plt.ylabel("Temperature (C)")
plt.show()
plt.close()

Funksionet xlabel dheylabel shtojnë shpjegime shtesë në $ x $ - dhe $ y $ - $.

Fatkeqësisht, kjo tabelë nuk është shumë informuese sepse intervalet që po përpiqemi të përshkruajmë janë relativisht të vogla. Meqenëse do të dëshironim të përqendrohemi në intervals të temperaturave mund të kufizojmë vlerat e diapazonit që përfaqësohen nga $y$-axis. Në këtë rast, duke përdorur funksionin ylim ($y$-limits) ne do të kufizojmë gamën e temperaturave të shfaqura në intervalin $34-39^\circ C$.

In [8]:
plt.ylim(34,39)
plt.bar(age, normalT_hi)
plt.bar(age, normalT_lo)
plt.title("Normal body temperature by age")
plt.xlabel("Age (years)")
plt.ylabel("Temperature (C)")
plt.show()
plt.close()

Vini re gjithashtu që renditja e dy funksioneve të barit ka rëndësi! Libraria tërheq bare që paraqesin të dhëna sipas rendit në të cilën ato paraqiten në kodin Python. Meqenëse vlerat në normalT_hi janë më të mëdha se vlerat në normalT_lo renditja tjetër e mundshme e shiritave të komandave prodhon grafikun në të cilin shfaqen vlerat më të larta mbi ato më të ulëtat, që nuk është ajo që kishim në mendje:

In [9]:
plt.ylim(34,39)
plt.bar(age, normalT_lo)
plt.bar(age, normalT_hi)
plt.title("Normal body temperature by age")
plt.xlabel("Age (years)")
plt.ylabel("Temperature (C)")
plt.show()
plt.close()

Prandaj, ne tërheqim vlera më të larta së pari, dhe pastaj pikturojmë vlerat e dashura mbi to:

In [10]:
plt.ylim(34,39)
plt.bar(age, normalT_hi)
plt.bar(age, normalT_lo)
plt.title("Normal body temperature by age")
plt.xlabel("Age (years)")
plt.ylabel("Temperature (C)")
plt.show()
plt.close()

Për ata që nuk e kaluan gjithë këtë kohë për të prodhuar diagramin mund të jetë e paqartë se cilat vlera përfaqësohen nga cila ngjyrë. Kjo është arsyeja pse është e mundur të shtoni një legjendë në tabelë. Për ta bërë këtë, çdo komandë bar merr dhe një parametër shtesë të formës label = "shpjegim", i cili ofron një shpjegim të shkurtër të asaj që të dhënat paraqiten nga diagrama. Funksioni legend në fund vendos një legjendë në një nga qoshet e grafikut:

In [11]:
plt.ylim(34,39)
plt.bar(age, normalT_hi, label="upper limit")
plt.bar(age, normalT_lo, label="lower limit")
plt.title("Normal body temperature by age")
plt.xlabel("Age (years)")
plt.ylabel("Temperature (C)")
plt.legend()
plt.show()
plt.close()

3.4. Ushtrime

Ushtrimi 1. Shikoni kodin me kujdes dhe pastaj përgjigjuni pyetjeve:

In [12]:
import matplotlib.pyplot as plt
plt.ylim(34,39)
plt.bar(age, normalT_hi, label="upper limit")
plt.bar(age, normalT_lo, label="lower limit")
plt.title("Normal body temperature by age")
plt.xlabel("Age (years)")
plt.ylabel("Temperature (C)")
plt.legend()
plt.show()
plt.close()
  1. Çfarë bën funksioni bar?
  2. Çarë ndodh nëse këmbejmë dy rreshtat e kodit që përmbajnë funksionet bar?
  3. Çarë bën funksioni xlabel?
  4. Çarë bëjnë funksionet ylim dhelegend?
  5. Si do ta ndryshonit madhësinë e kësaj grafike?
  6. Si do ta ndryshoni ngjyrën e shufrave në të gjelbër dhe të verdhë?

Ushtrimi 2. Dhjetë vendet e para në listën e ATP më 21 korrik 2109 duken kështu:

In [13]:
tennis_players = ["Đoković", "Nadal", "Federer", "Thiem", "Zverev", "Tsipras", "Nishikori", "Khachanov", "Fognini", "Medvedev"]
ATP_points     = [12415,      7945,    7460,      4595,   4325,     4045,       4040,        2890,        2785,      2625]

Vizualizoni këtë me një bar chart.

Ushtrimi 3. Biologët deri më tani kanë klasifikuar më shumë se 2,000,000 lloje të qenieve të gjalla. Të gjitha ato janë të ndara në pesë mbretëri dhe numri i përafërt i specieve për mbretëri është dhënë në këtë tabelë:

Kingdom Number of species
Animalia 1,400,000
Plantae 290,000
Fungi 100,000
Protoctista 200,000
Prokaryotae 10,000

Vizualizoni këto të dhëna me një bar chart.

Ushtrimi 4. Tabela e mëposhtme përmbledh temperaturat më të larta dhe më të ulëta të regjistruara (në $^\circ$C) për çdo kontinet:

Continent: Europe Asia Africa North America South America Australia Antarctica
Highest recorded temp: 48 54 55 56.7 48.9 50.7 19.8
Lowest recorded temp: -58.1 -67.8 -23.9 -63 -32.8 -23 -89.2

Vizualizoni të dhënat në të njëjtën grafik. Përdorni shufra të kuqe për të shfaqur temperaturat më të larta të regjistruara, dhe shufrat blu për ato më të ulëtat.

Ushtrimi 5.

(a) Kërkoni në Internet për të zbuluar se çfarë bën funksioni barh nga librariamatplotlib.

(b) Zgjidhni ushtrimin 4 duke përdorur funksionin barh.

In [ ]:

Ushtrimi 6. Është llogaritur se më 1 korrik 2019 popullsia e Kinës ishte 1,420,062,022 dhe popullsia e Indisë ishte 1,368,737,513. Është vlerësuar gjithashtu se popullsia e Kinës rritet me 0.35% në vit, ndërsa popullsia e Indisë rritet me 1.08% në vit.

(a) Duke supozuar se shkalla e rritjes së popullsisë së të dy vendeve nuk do të ndryshojë në të ardhmen e afërt vizualizoni popullsinë e Kinës dhe Indisë në dhjetë vitet e ardhshme në të njëjtën grafik duke përdorur funksionin 'plot'.

(b) Lexoni nga grafiku në cilin vit India do të kalojë Kinën si vendi më i populluar në Tokë.

In [ ]:

© 2019 Petlja.org Creative Commons License