Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตั้งค่า Aspect Ratio ของ 3D Plot ใน Matplotlib


ภาพรวม

สาธิตการตั้งค่า Aspect Ratio ของ 3D Surface Plot ด้วย set_aspect('auto')

ขั้นตอน

  1. สร้าง Figure และ 3D Axes ด้วย projection='3d'
  2. สร้าง Grid ข้อมูล R, Y และค่า Z
  3. พลอต Surface ด้วย plot_surface()
  4. ตั้งค่า Aspect Ratio: ax.set_aspect('auto')
  5. ปรับมุมมอง azim, elev
  6. บันทึกภาพและแสดงผล

ตัวอย่างโค้ด

from matplotlib import pyplot as plt
from matplotlib import cm
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()
ax = fig.gca(projection='3d')

R, Y = np.meshgrid(np.arange(0, 100, 1), np.arange(0, 60, 1))
z = 0.1 * np.abs(np.sin(R / 40) * np.sin(Y / 6))

ax.plot_surface(R, Y, z, cmap=cm.rainbow, linewidth=0)
ax.set_aspect('auto')
ax.azim = -160
ax.elev = 30

fig.savefig('data.png')
plt.show()

ผลลัพธ์

3D Surface Plot กว้างกว่าสูง (Auto Aspect) มุมมอง Azimuth -160°, Elevation 30°

ตัวเลือก Aspect Ratio

  • 'auto': ปรับอัตโนมัติตามขนาด Figure
  • 'equal': หน่วยเท่ากันทุกแกน (อาจทำให้บีบอัด)
  • Tuple (x, y, z): อัตราส่วนเฉพาะเจาะจง (Matplotlib 3.3+)