ภาพรวม
สาธิตการตั้งค่า Aspect Ratio ของ 3D Surface Plot ด้วย set_aspect('auto')
ขั้นตอน
- สร้าง Figure และ 3D Axes ด้วย
projection='3d' - สร้าง Grid ข้อมูล R, Y และค่า Z
- พลอต Surface ด้วย
plot_surface() - ตั้งค่า Aspect Ratio:
ax.set_aspect('auto') - ปรับมุมมอง
azim,elev - บันทึกภาพและแสดงผล
ตัวอย่างโค้ด
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+)