π» ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ python: ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ π¨
ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Π² Python
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ matplotlib. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import matplotlib.pyplot as plt
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π΄Π»Ρ ΡΡΡΠ΅Π»ΠΊΠΈ
x = [0, 1]
y = [0, 1]
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ
plt.plot(x, y)
plt.arrow(0, 0, 1, 1, width=0.05)
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°
plt.show()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ plot()
Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ arrow()
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ΅Π»ΠΊΠΈ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ width
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ ΡΠΈΡΠΈΠ½Ρ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠΎΡΠ»Π΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΅Π»ΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ show()
Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Π² Python!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Π² Python?
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Π² Python, Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ :
1. Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ matplotlib
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° matplotlib - ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² Python. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ matplotlib:
import matplotlib.pyplot as plt
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠ³ΡΡΡ ΠΈ ΠΎΡΠ΅ΠΉ
fig, ax = plt.subplots()
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ
arrow = plt.Arrow(0, 0, 1, 1, width=0.1)
ax.add_patch(arrow)
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΡΠ΅ΠΉ
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°
plt.show()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΈΠ³ΡΡΡ ΠΈ ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ plt.subplots(). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΡΠ΅Π»ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ plt.Arrow(). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΈΡΠΈΠ½Ρ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠ΅Π»ΠΊΡ Π½Π° ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ax.add_patch(). ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ax.set_xlim() ΠΈ ax.set_ylim() ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ Π³ΡΠ°ΡΠΈΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ plt.show().
2. Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ turtle
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° turtle ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ turtle:
import turtle
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π°
screen = turtle.Screen()
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅ΠΏΠ°Ρ
ΠΈ
arrow = turtle.Turtle()
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅ΠΏΠ°Ρ
ΠΈ
arrow.width(3)
arrow.shape("arrow")
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ
arrow.forward(100)
arrow.right(90)
arrow.forward(50)
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅ΠΏΠ°Ρ
ΠΈ
turtle.done()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ turtle.Screen(). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ΅ΠΏΠ°Ρ Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ turtle.Turtle(). ΠΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠ΅ΠΏΠ°Ρ Ρ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π΅Π΅ ΡΠΎΠ»ΡΠΈΠ½Ρ ΠΈ ΡΠΎΡΠΌΡ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ forward() ΠΈ right() Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠ΅ΡΠ΅ΠΏΠ°Ρ Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ turtle.done().
3. Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cairo
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° cairo ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 2D Π³ΡΠ°ΡΠΈΠΊΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ cairo:
import cairo
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 400, 400)
ctx = cairo.Context(surface)
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ctx.set_line_width(5)
ctx.set_source_rgb(1, 0, 0)
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ
ctx.move_to(50, 50)
ctx.line_to(100, 100)
ctx.line_to(50, 150)
ctx.stroke()
# Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
surface.write_to_png("arrow.png")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ cairo.ImageSurface(), ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ARGB32) ΠΈ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ (400x400 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ cairo.Context(). ΠΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΡΠ²Π΅Ρ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ move_to() ΠΈ line_to() Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΅Π»ΠΊΠΈ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° write_to_png().
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ Π² Python. Π£Π΄Π°ΡΠΈ Π²Π°ΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!