πŸ“Š Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ | ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π³Π°ΠΉΠ΄ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ πŸ“ˆ

Для построСния 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ matplotlib.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для построСния 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ° с использованиСм этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:


import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Figure ΠΈ Axes
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Π—Π°Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ для Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
z = [1, 8, 27, 64, 125]

# Π‘Ρ‚Ρ€ΠΎΠΈΠΌ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ
ax.plot(x, y, z)

# Настройка осСй
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ
plt.show()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ matplotlib. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Figure ΠΈ Axes для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. ΠœΡ‹ Π·Π°Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ для Π³Ρ€Π°Ρ„ΠΈΠΊΠ° - массивы x, y ΠΈ z. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ plot() ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Axes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ. НаконСц, ΠΌΡ‹ настраиваСм подписи осСй ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ сам Π³Ρ€Π°Ρ„ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° show().

НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ Π² Python!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов создания 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Matplotlib.

Π¨Π°Π³ 1: Установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ построСниС 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Для этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install matplotlib

ПослС установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Matplotlib ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ созданию 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ².

Π¨Π°Π³ 2: ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с построСния простого 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простого 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ° с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Matplotlib:

import matplotlib.pyplot as plt
import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
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))

# ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

# Настройка осСй ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ')

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
plt.show()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм сСтку Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ -5 Π΄ΠΎ 5 ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ синуса для расчСта значСния Z. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ строим ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ plot_surface.

Настройка осСй ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ позволяСт Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ названия ΠΊ осям ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ. НаконСц, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ show().

Π¨Π°Π³ 3: НастраиваСмый 3D Π³Ρ€Π°Ρ„ΠΈΠΊ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΎΠ»Π΅Π΅ настраиваСмый 3D Π³Ρ€Π°Ρ„ΠΈΠΊ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»Π΅Π³Π΅Π½Π΄Ρƒ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности взаимодСйствия с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ.

import matplotlib.pyplot as plt
import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
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))

# ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap='viridis')

# Настройка Ρ†Π²Π΅Ρ‚Π½ΠΎΠΉ ΡˆΠΊΠ°Π»Ρ‹
fig.colorbar(surf)

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ‹
ax.legend()

# Настройка осСй ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('НастраиваСмый 3D Π³Ρ€Π°Ρ„ΠΈΠΊ')

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
plt.show()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ добавляСм Ρ†Π²Π΅Ρ‚Π½ΡƒΡŽ ΡˆΠΊΠ°Π»Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ colorbar ΠΈ Π»Π΅Π³Π΅Π½Π΄Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ legend. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ добавляСм названия ΠΊ осям ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ.

Π¨Π°Π³ 4: 3D Π³Ρ€Π°Ρ„ΠΈΠΊ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прСдставлСниями

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Matplotlib Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стилях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ scatter plot, wireframe, surface plot ΠΈ Π΄Ρ€. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Scatter plot

import matplotlib.pyplot as plt
import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)

# ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ 3D scatter plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)

# Настройка осСй ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Scatter Plot')

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
plt.show()

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ использованиС 3D scatter plot для прСдставлСния случайно сгСнСрированных Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ scatter вмСсто plot_surface, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² 3D пространствС.

Wireframe plot

import matplotlib.pyplot as plt
import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
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))

# ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ 3D wireframe plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z)

# Настройка осСй ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Wireframe Plot')

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
plt.show()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ plot_wireframe для построСния 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Π²ΠΈΠ΄Π΅ сСтки. ЗначСния Z Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ добавляСм названия ΠΊ осям ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ.

ΠœΡ‹ рассмотрСли основныС способы построСния 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Matplotlib. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… своими идСями ΠΈ настройками. Π£Π΄Π°Ρ‡ΠΈ Π² Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠžΡΠ½ΠΎΠ²Ρ‹ Matplotlib. Визуализация Π΄Π°Π½Π½Ρ‹Ρ…. Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π² Python

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ 3D Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° Python ( Pygame )

ΠžΡΠ½ΠΎΠ²Ρ‹ Matplotlib | ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π“Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² На Python

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”’ΠšΠ°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ if Π² Python: простой способ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ вашСго ΠΊΠΎΠ΄Π°

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнт строки Python: простой Π³Π°ΠΉΠ΄

πŸ” Как ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ 4 числа Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: простой способ

πŸ“Š Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ 3D Π³Ρ€Π°Ρ„ΠΈΠΊ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ | ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π³Π°ΠΉΠ΄ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ πŸ“ˆ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ansible Python ΠΈ Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования?

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ pip для Python Π½Π° Linux: подробная инструкция

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для рисования Π½Π° Python: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ