Діаграма — це графічне зображення, у якому числові дані подано геометричними фігурами.
Діаграми можна створювати, програмуючи креслення графічних примітивів (лінія, прямокутник, сектор) графічними методами полотна Canvas.
Побудова гістограми
Гістограма (стовпчикова діаграма) використовується для порівняння елементів табличної величини.  Кількісні співвідношення деякого показника представлені у вигляді прямокутників, площі яких пропорційні. Ширина прямокутників зазвичай однакова, при цьому їх висота визначає співвідношення відображуваного параметра. 
 
Побудуємо гістограму показника успішності учнів \(9\)А класу з чотирьох предметів, значення якого занесені до списку \(ndu\) (рис.1).
 
33.PNG
Рис.1
 
Областю побудови діаграми є полотно об’єкта Canvas розмірами 300 × 220 пікселів.
 
Координатні осі намальовані за допомогою методу canvas.create_line(). Для малювання стрілок до переліку параметрів методу додано параметри arrow та arrowshape. Атрибуту arrow надано значення LAST, що задає розміщення стрілки в кінці лінії. Значення атрибуту аrrowshape задає розміри стрілки.
canvas.create_line(10, 200, 10, 10, arrow = LAST, arrowshape = "10 20 10")
canvas.create_line(10, 200, 280, 200, arrow = LAST, arrowshape = "10 20 10")

Ряди даних побудовані методом create_rectangle().  Нижні сторони прямокутників (стовпців гістограми) розташовані на одному рівні (на осі Ох), тому координата y2 для нижнього кута стовпців дорівнює 200. Визначимо координати для побудови першого стовпця. Нехай координата х1 дорівнює 30 пікселів. Висота полотна дорівнює 220 пікселів, висота першого стовпця становить ndu[0]*20 (коєфіцієнт 20 використовується для масштабування прямокутників). Отже, координата y1 верхнього кута першого стовпця дорівнює 220 – ndu[0]*20 (рис. 2).
 
Нехай ширина стовпця діаграми дорівнює 30 пікселів, тоді координата х2 першого стовпця становить (30 + 30) пікселів. Для і-го стовпця х1 = i * 30, х2 = i * 30 + 30.

45.PNG
Рис.2

До діаграми слід додати підписи осей і рядів даних. Розмістити текст на полотні можна за допомогою методу create_text(х, у, text). За замовчуванням у точці (х ,у) розташовується центр напису. Щоб розмістити за вказаними координатами ліву границю тексту, атрибуту anchor надається значення W (від англ. west — захід).
from tkinter import*
root = Tk()
root.title("Успішність учнів 9А класу")
canvas = Canvas(root, width = 300, height = 220)
canvas.pack()
ndu =[9.8, 8.5, 9.1, 7.4]
# Побудова координатних осей
canvas.create_line(10, 200, 10, 10, arrow = LAST, arrowshape = "10 20 10")
canvas.create_line(10, 200, 280, 200, arrow = LAST, arrowshape = "10 20 10")
colors = ['red', 'orange', 'yellow', 'green']
subject = ['Інф. ', 'Алг. ', 'Геом. ', 'Фіз. ']
x = 30
for i in range(4):
          y = 220–ndu[i]*20
          canvas.create_rectangle(x, y, x+30, 200, fill = colors[i])
          canvas.create_text(x, 210, text = subject[i], anchor = W)
          canvas.create_text(x, y–10, text = str(ndu[i]), anchor = W, font = "Arial 13")
          x = x+50   #  перехід до наступного прямокутника
Побудова графіку
Графіки використовуються для зображення зміни значень певної величини в певний період часу. Побудуємо графік зміни значень середньодобової температури повітря за тиждень, які зберігаються в списку \(а\) (рис. 3).
 
35.PNG
Рис.3

from tkinter import*
root = Tk()
root.title("Середньодобова температура за тиждень")
canvas = Canvas(root, width = 300, height = 220)
canvas.pack()
 a = [14, 12, 15, 12, 9, 10, 7]# Побудова координатних осей
canvas.create_line(10, 200, 10, 10, arrow = LAST, arrowshape = "10 20 10")
canvas.create_line(10, 200, 280, 200, arrow = LAST, arrowshape = "10 20 10")
day = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Нд']
x1 = 30
y1 = 220–a[0]*10
canvas.create_text(x1, 210, text = day[0], anchor = W)
canvas.create_text(x1, y1–10, text = str(a[0]), anchor = W, font = "Arial 12")
for i in range(1, 7):
      x = x1+30
      y = 220–a[i]*10
      canvas.create_line(x1, y1, x, y, width = 2)
      canvas.create_text(x, 210, text = day[i], anchor = W)
      canvas.create_text(x, y–10, text = str(a[i]), anchor = W, font = "Arial 12")
      x1 = x
      y1 = y
Побудова кругової діаграми
Кругова діаграма — це діаграма у формі кола, яке поділене на сегменти, що ілюструють чисельне співвідношення частин у цілому. Секторну діаграму використовують, якщо елементи ряду даних утворюють щось ціле.
Алгоритм побудови кругової діаграми за значеннями елементів списку \(а\):
1) обчислити суму елементів списку:
\(S = sum(a)\)
2) знайти градусну міру сектора, що відповідає кожному значенню елемента списку:
\(kut[i] = a[i]*360/S\)
3) побудувати всі сектори діаграми (у результаті сектори утворять повний круг).
Побудуємо кругову діаграму прибутку підприємства за 4 квартали року (рис.4) за даними таблиці:
 
  І квартал ІІ квартал ІІІ квартал ІV квартал
Прибуток
підприємства, тис. грн
\(40\) \(100\) \(80\) \(70\)
 
37.PNG
Рис.4
 
from tkinter import*
root = Tk()
root.title('Прибуток підприємства, тис. грн')
canvas = Canvas(root, width = 500, height = 500)
canvas.pack()
colors = ['orange','lightblue', 'yellow', 'green']
a=[40, 100, 80, 70]
suma=sum(a) 
# визначаємо, яку частину від загальної суми прибутку  складає
# прибуток кожного місяцю. Елементи списку kut набувають значень 
# градусної міри кожного сегмента діаграми.
kut=[a[i]*360/suma for i in range(len(a))]
st=0 # початок відліку кутів
for i in range (len(kut)):
    canvas.create_arc(50,50,250,250,start=st,extent=kut[i], fill = colors[i], style=PIESLICE)
    st+=kut[i] # перехід до початку наступної дуги
canvas.create_text(110, 130, text = 'II        I', font='Arial 18', anchor = W)
canvas.create_text(110, 180, text = 'III      IV', font='Arial 18',anchor = W)
Джерела:
Інформатика : підруч. для 9 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2022.