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)

ด้านล่างนี้เป็นผลลัพธ์ของรหัสที่อธิบายไว้ข้างต้น -