Python není jen o textovém zpracování a automatizaci úkolů. Díky množství dostupných knihoven se Python stal oblíbeným jazykem i pro tvorbu grafiky. Tento průvodce se zaměřuje na různé techniky a knihovny, které můžete použít k vytváření grafiky v Pythonu, včetně 2D grafiky, vizualizace dat, animací a dokonce i jednoduchých her.
Existuje mnoho knihoven pro grafiku v Pythonu. Některé z nich jsou určeny pro základní kreslení, jiné pro komplexní vizualizace a interaktivní aplikace. Níže jsou uvedeny některé z nejpopulárnějších knihoven:
Matplotlib je jedna z nejpopulárnějších knihoven pro vizualizaci dat v Pythonu. Umožňuje vytváření různých typů grafů, jako jsou sloupcové grafy, čárové grafy, histogramy a mnoho dalších. Díky ní můžete data prezentovat vizuálně atraktivním způsobem.
import matplotlib.pyplot as plt
# Data pro vykreslení grafu
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# Vytvoření grafu
plt.plot(x, y)
plt.title('Čárový Graf')
plt.xlabel('X-osa')
plt.ylabel('Y-osa')
plt.show()
Tento kód vykreslí jednoduchý čárový graf, kde na ose X jsou hodnoty x
a na ose Y jsou hodnoty y
. Funkce plt.show()
zobrazí graf.
Matplotlib také umožňuje vytváření složitějších grafů, jako jsou 3D grafy nebo grafy s několika podgrafy.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Vytvoření dat pro 3D graf
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))
# Vykreslení povrchu
ax.plot_surface(x, y, z, cmap='viridis')
plt.show()
Tento příklad vytváří 3D povrchový graf pomocí Matplotlib. Data jsou generována pomocí NumPy a povrch je vykreslen s barevným mapováním viridis
.
Pillow je rozšíření původní knihovny Python Imaging Library (PIL) a je určeno pro práci s obrázky. Umožňuje otevírání, úpravu, ukládání obrázků a mnoho dalšího.
Pillow umožňuje načítání obrázků z různých formátů a jejich následnou manipulaci, jako je změna velikosti, ořezávání, rotace nebo přidání filtrů.
from PIL import Image
# Načtení obrázku
obrazek = Image.open('cesta/k_obrazku.jpg')
# Zobrazení obrázku
obrazek.show()
Tento kód načte obrázek z disku a zobrazí jej pomocí výchozího prohlížeče obrázků.
Pillow umožňuje provádět různé úpravy obrázků. Můžete obrázky měnit, převádět do různých barevných modelů nebo na ně aplikovat různé filtry.
from PIL import Image
# Načtení obrázku
obrazek = Image.open('cesta/k_obrazku.jpg')
# Změna velikosti obrázku
obrazek = obrazek.resize((200, 200))
# Převod na odstíny šedi
obrazek = obrazek.convert('L')
# Uložení upraveného obrázku
obrazek.save('cesta/k_obrazku_odstiny_sedi.jpg')
V tomto příkladu je obrázek zmenšen na velikost 200x200 pixelů a následně převeden do odstínů šedi. Upravený obrázek je uložen na disk.
Tkinter je standardní knihovna Pythonu pro tvorbu grafických uživatelských rozhraní (GUI). Tkinter umožňuje kreslit jednoduché 2D grafické prvky jako čáry, obdélníky, elipsy a text.
Pomocí Tkinter lze jednoduše kreslit základní geometrické tvary. Tkinter poskytuje objekt Canvas
, který slouží jako plátno pro kreslení.
import tkinter as tk
# Vytvoření hlavního okna
root = tk.Tk()
root.title("Tkinter Kreslení")
# Vytvoření plátna
canvas = tk.Canvas(root, width=400, height=400, bg='white')
canvas.pack()
# Kreslení čáry
canvas.create_line(0, 0, 400, 400, fill="blue", width=5)
# Kreslení obdélníku
canvas.create_rectangle(50, 50, 350, 350, outline="red", width=3)
# Kreslení elipsy
canvas.create_oval(100, 100, 300, 200, fill="green")
# Kreslení textu
canvas.create_text(200, 350, text="Hello, Tkinter!", font=("Arial", 20), fill="purple")
# Spuštění hlavní smyčky
root.mainloop()
Tento příklad vytváří jednoduchou grafickou aplikaci pomocí Tkinter, kde jsou vykresleny různé tvary a text na plátno.
PyGame je oblíbená knihovna pro tvorbu 2D her v Pythonu. Obsahuje nástroje pro práci s grafikou, zvukem a ovládáním. Díky PyGame můžete vytvořit jednoduché i komplexní hry.
PyGame umožňuje kreslit různé tvary, pracovat s obrázky, animacemi a vytvářet interaktivní aplikace. Základními stavebními kameny PyGame jsou povrchy (Surface
), které slouží jako plátna pro kreslení.
import pygame
import sys
# Inicializace PyGame
pygame.init()
# Nastavení velikosti okna
size = width, height = 640, 480
screen = pygame.display.set_mode(size)
# Nastavení barvy pozadí
bg_color = (0, 0, 0) # černá
# Hlavní smyčka
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Vyplnění pozadí
screen.fill(bg_color)
# Aktualizace displeje
pygame.display.flip()
Tento kód vytvoří základní herní okno s černým pozadím, které běží v nekonečné smyčce, dokud uživatel aplikaci nezavře.
PyGame umožňuje nejen kreslení tvarů, ale také jejich animaci. Můžete kreslit kruhy, obdélníky nebo načítat a vykreslovat obrázky.
import pygame
import sys
# Inicializace PyGame
pygame.init()
# Nastavení velikosti okna
size = width, height = 640, 480
screen = pygame.display.set_mode(size)
# Nastavení barvy pozadí
bg_color = (0, 0, 0) # černá
# Nastavení barvy kuličky
ball_color = (255, 0, 0) # červená
ball_pos = [width // 2, height // 2]
ball_radius = 20
ball_speed = [2, 2]
# Hlavní smyčka
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Pohyb kuličky
ball_pos[0] += ball_speed[0]
ball_pos[1] += ball_speed[1]
# Kontrola kolizí s hranicemi okna
if ball_pos[0] - ball_radius < 0 or ball_pos[0] + ball_radius > width:
ball_speed[0] = -ball_speed[0]
if ball_pos[1] - ball_radius < 0 or ball_pos[1] + ball_radius > height:
ball_speed[1] = -ball_speed[1]
# Vyplnění pozadí
screen.fill(bg_color)
# Kreslení kuličky
pygame.draw.circle(screen, ball_color, ball_pos, ball_radius)
# Aktualizace displeje
pygame.display.flip()
Tento příklad vykresluje kuličku, která se odráží od hranic okna. Kulička se pohybuje díky změně její pozice v každém cyklu hlavní smyčky.