Plotly - 3D Scatter และ Surface Plot
บทนี้จะให้ข้อมูลเกี่ยวกับพล็อตกระจายภาพสามมิติ (3D) และพล็อตพื้นผิว 3 มิติและวิธีการสร้างด้วยความช่วยเหลือของ Plotly
พล็อต 3D Scatter
พล็อตการกระจายแบบสามมิติ (3D) เป็นเหมือนพล็อตการกระจาย แต่มีสามตัวแปร - x, y, and z or f(x, y)เป็นตัวเลขจริง กราฟสามารถแสดงเป็นจุดในระบบพิกัดคาร์ทีเซียนสามมิติ โดยทั่วไปจะวาดบนหน้าหรือหน้าจอสองมิติโดยใช้วิธีมุมมอง (ภาพสามมิติหรือมุมมอง) เพื่อให้มิติใดมิติหนึ่งดูเหมือนจะออกมาจากหน้า
พล็อตการกระจาย 3 มิติใช้เพื่อพล็อตจุดข้อมูลบนแกนสามแกนเพื่อพยายามแสดงความสัมพันธ์ระหว่างตัวแปรสามตัว แต่ละแถวในตารางข้อมูลจะแสดงด้วยเครื่องหมายซึ่งตำแหน่งขึ้นอยู่กับค่าในคอลัมน์ที่กำหนดไว้ในX, Y, and Z axes.
ตัวแปรที่สี่สามารถตั้งค่าให้สอดคล้องกับ color หรือ size ของ markersดังนั้นการเพิ่มมิติอื่นให้กับพล็อต เรียกความสัมพันธ์ระหว่างตัวแปรต่างๆcorrelation.
ก Scatter3D traceเป็นวัตถุกราฟที่ส่งคืนโดยฟังก์ชัน go.Scatter3D () อาร์กิวเมนต์บังคับสำหรับฟังก์ชันนี้คือ xy and z แต่ละคนคือ list or array object.
ตัวอย่างเช่น -
import plotly.graph_objs as go
import numpy as np
z = np.linspace(0, 10, 50)
x = np.cos(z)
y = np.sin(z)
trace = go.Scatter3d(
x = x, y = y, z = z,mode = 'markers', marker = dict(
size = 12,
color = z, # set color to an array/list of desired values
colorscale = 'Viridis'
)
)
layout = go.Layout(title = '3D Scatter plot')
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
ผลลัพธ์ของรหัสได้รับด้านล่าง -
พล็อตพื้นผิว 3 มิติ
แผนภาพพื้นผิวคือแผนภาพของข้อมูลสามมิติ ในพล็อตพื้นผิวแต่ละจุดถูกกำหนดโดย 3 จุด:latitude, longitudeและ altitude(X, Y และ Z) แทนที่จะแสดงจุดข้อมูลแต่ละจุดแผนภาพพื้นผิวจะแสดงความสัมพันธ์เชิงฟังก์ชันระหว่างจุดที่กำหนดdependent variable (Y)และตัวแปรอิสระสองตัว (X และ Z) พล็อตนี้เป็นพล็อตคู่กับโครงร่าง
นี่คือสคริปต์ Python สำหรับแสดงพล็อตพื้นผิวอย่างง่ายโดยที่ y array คือทรานสโพสของ x และ z คำนวณเป็น cos (x2 + y2)
import numpy as np
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
trace = go.Surface(x = x, y = y, z =z )
data = [trace]
layout = go.Layout(title = '3D Surface plot')
fig = go.Figure(data = data)
iplot(fig)
ด้านล่างนี้เป็นผลลัพธ์ของรหัสที่อธิบายไว้ข้างต้น -