Matplotlib là một thư viện trong Python được sử dụng để tạo hoạt ảnh tĩnh và động cũng như các sơ đồ với các chức năng sẵn có của nó. Nó có rất nhiều tính năng sẵn có và các công cụ phân tích tích hợp để phân tích bất kỳ hình hoặc biểu đồ nào
Nếu chúng ta muốn vẽ bất kỳ hình ba chiều nào thì chúng ta có thể sử dụng thư viện Matplotlib. Khi chúng tôi có một tập dữ liệu khổng lồ gồm các biến ba chiều và chúng tôi vẽ biểu đồ của nó thì nó trông rất phân tán và đây được gọi là biểu đồ phân tán 3D. Chúng tôi sẽ sử dụng bộ công cụ matplot3d của Matplotlib để vẽ hình ba chiều
có một cái rìu. hàm scatterd3D[] chấp nhận tập dữ liệu tọa độ X, Y và Z
Phải mất nhiều đối số hơn dựa trên các thuộc tính mà chúng tôi muốn cung cấp cho biểu đồ ba chiều của mình
Khi Matplotlib được tạo lần đầu tiên, chỉ có âm mưu hai chiều được xem xét. Một bộ sưu tập các công cụ thực tế [mặc dù khá hạn chế] để trực quan hóa dữ liệu ba chiều đã được tạo ra vào khoảng thời gian của 1. 0 bằng cách xếp lớp một số tiện ích biểu đồ ba chiều lên trên màn hình hai chiều của Matplotlib. Bằng cách nhập bộ công cụ mplot3d, là một phần của cài đặt Matplotlib cơ bản, có thể thực hiện được các biểu đồ ba chiều
Biểu đồ ba chiều đơn giản nhất là biểu đồ phân tán được tạo thành từ các dòng hoặc cụm [x, y, z] bộ ba. Chúng có thể được sản xuất bằng cách sử dụng rìu. cốt truyện3D và rìu. các chức năng phân tán3D, giống như biểu đồ hai chiều điển hình hơn đã được trình bày trước đây. Chúng có chữ ký cuộc gọi tương tự đáng kể với các đối tác hai chiều của chúng
Để tạo ảo giác về chiều sâu trên trang, độ trong suốt của các điểm phân tán đã được thay đổi
ví dụ 1
đầu ra
Giải trình
Trong ví dụ trên, chúng ta đã tạo biểu đồ ba chiều bằng cách sử dụng lệnh ax. hàm phân tán []. Ban đầu, chúng tôi đã nhập tất cả các thư viện mà chúng tôi yêu cầu, như numpy, matplotlib và mpl_toolkits. Sau đó, chúng tôi đã tạo bộ dữ liệu cho tọa độ x, y và z của các số ngẫu nhiên bằng cách sử dụng hàm randInt[]. Sau đó chúng tôi đã sử dụng rìu. scatter3D[] và đặt tọa độ x, y và z, và chúng tôi lấy màu đỏ cho các điểm. Cuối cùng, chúng ta hiển thị đồ thị bằng hàm show[]
ví dụ 2
đầu ra
Giải trình
Trong đoạn mã trên, chúng ta đã vẽ sơ đồ ba chiều bằng hàm ax. chức năng phân tán3D[]. Chúng tôi đã tạo bộ dữ liệu ngẫu nhiên cho các tọa độ x, y và z và vẽ chúng bằng cách sử dụng điểm đánh dấu '^'. Chúng tôi sử dụng hàm set_label để gán nhãn cho các trục tương ứng
ví dụ 3
đầu ra
Giải trình
Trong ví dụ trên, chúng tôi đã vẽ đồng thời hai bộ dữ liệu chiều 3 chiều trong cùng một mã. Đối với biểu đồ ba chiều đầu tiên, chúng tôi đã chọn màu xanh lam cho các điểm và '^' làm điểm đánh dấu cho các điểm trong hình
Theo cách tương tự đối với ô thứ hai, chúng tôi đã chọn màu đỏ cho các điểm và 'o' làm điểm đánh dấu các điểm trong hình
Dash là một khung nguồn mở để xây dựng các ứng dụng phân tích, không yêu cầu Javascript và nó được tích hợp chặt chẽ với thư viện vẽ đồ thị Plotly
Tìm hiểu về cách cài đặt Dash tại https. // dấu gạch ngang. kịch bản. ly/cài đặt
Ở mọi nơi trong trang này mà bạn thấy fig.show[]
, bạn có thể hiển thị cùng một con số trong ứng dụng Dash bằng cách chuyển nó tới đối số figure
của thành phần Graph
từ gói dash_core_components
tích hợp như thế này
Chúng tôi sẽ bắt đầu bằng cách vẽ một điểm duy nhất trong không gian tọa độ 3D. Sau đó, chúng ta sẽ tìm hiểu cách tùy chỉnh các biểu đồ của mình và sau đó chúng ta sẽ chuyển sang các biểu đồ phức tạp hơn như bề mặt Gaussian 3D, đa giác 3D, v.v. Cụ thể, chúng ta sẽ xem xét các chủ đề sau
Mục lục
1
Vẽ một điểm duy nhất trong không gian 3D
Chúng ta hãy bắt đầu bằng cách thực hiện từng bước cần thiết để tạo biểu đồ 3D trong Python, với một ví dụ về biểu đồ một điểm trong không gian 3D
Bước 1. Nhập thư viện
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D
Cái đầu tiên là một câu lệnh nhập tiêu chuẩn để vẽ đồ thị bằng matplotlib, mà bạn cũng sẽ thấy cho đồ thị 2D
Lần nhập thứ hai của lớp
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]4 là bắt buộc để bật phép chiếu 3D. Mặt khác, nó không được sử dụng ở bất kỳ nơi nào khác
Lưu ý rằng lần nhập thứ hai là bắt buộc đối với các phiên bản Matplotlib trước 3. 2. 0. Đối với phiên bản 3. 2. 0 trở lên, bạn có thể vẽ sơ đồ 3D mà không cần nhập
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]5
Bước 2. Tạo hình và trục
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']
đầu ra
Ở đây, trước tiên chúng ta tạo một hình có kích thước 4 inch X 4 inch
Sau đó, chúng tôi tạo một đối tượng trục 3-D bằng cách gọi phương thức
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]6 và chỉ định giá trị '3d' cho tham số
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]7
Chúng tôi sẽ sử dụng đối tượng trục này 'ax' để thêm bất kỳ biểu đồ nào vào hình
Lưu ý rằng hai bước này sẽ phổ biến trong hầu hết các sơ đồ 3D mà bạn thực hiện trong Python bằng Matplotlib
Bước 3. Vẽ điểm
Sau khi chúng tôi tạo đối tượng trục, chúng tôi có thể sử dụng nó để tạo bất kỳ loại biểu đồ nào chúng tôi muốn trong không gian 3D
Để vẽ một điểm duy nhất, chúng ta sẽ sử dụng phương pháp
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]8 và chuyển ba tọa độ của điểm đó
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]
đầu ra
Như bạn có thể thấy, một điểm duy nhất đã được vẽ [màu xanh lam] tại [2,3,4]
Vẽ một đường liên tục 3D
Bây giờ chúng ta đã biết cách vẽ một điểm trong không gian 3D, tương tự chúng ta có thể vẽ một đường liên tục đi qua danh sách các tọa độ 3D
Chúng ta sẽ sử dụng phương thức
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]9 và chuyển 3 mảng, mỗi mảng cho tọa độ x, y và z của các điểm trên đường thẳng
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]
đầu ra
Chúng tôi đang tạo tọa độ x, y và z cho 50 điểm
Tọa độ x và y được tạo bằng cách sử dụng_______9_______0 để tạo 50 điểm phân bố đều trong khoảng từ -4π đến +4π. Tọa độ z chỉ đơn giản là tổng bình phương của tọa độ x và y tương ứng
Tùy chỉnh cốt truyện 3D
Hãy để chúng tôi vẽ một biểu đồ phân tán trong không gian 3D và xem cách chúng tôi có thể tùy chỉnh giao diện của nó theo những cách khác nhau dựa trên sở thích của chúng tôi. Chúng tôi sẽ sử dụng hạt giống ngẫu nhiên NumPy để bạn có thể tạo số ngẫu nhiên giống như hướng dẫn
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]
đầu ra
Bây giờ chúng ta hãy thêm một tiêu đề cho cốt truyện này
Thêm tiêu đề
Chúng ta sẽ gọi phương thức
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]1 của đối tượng axis để thêm tiêu đề vào biểu đồ
ax.set_title["Atom velocity distribution"] plt.show[]
đầu ra
LƯU Ý rằng tôi chưa thêm mã trước [để tạo hình và thêm biểu đồ phân tán] ở đây, nhưng bạn nên làm điều đó
Bây giờ chúng ta hãy thêm nhãn cho mỗi trục trên biểu đồ
Thêm nhãn trục
Chúng ta có thể đặt nhãn cho từng trục trong sơ đồ 3D bằng cách gọi các phương thức
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]2,
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]3 và
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]4 trên đối tượng trục
ax.set_xlabel["Atomic mass [dalton]"] ax.set_ylabel["Atomic radius [pm]"] ax.set_zlabel["Atomic velocity [x10⁶ m/s]"] plt.show[]
đầu ra
Sửa đổi các điểm đánh dấu
Như chúng ta đã thấy trong các ví dụ trước, theo mặc định, điểm đánh dấu cho mỗi điểm là một vòng tròn màu xanh có kích thước không đổi.
Chúng ta có thể thay đổi hình thức của các điểm đánh dấu để làm cho chúng biểu cảm hơn
Hãy để chúng tôi bắt đầu bằng cách thay đổi màu sắc và phong cách của điểm đánh dấu
ax.scatter[xs,ys,zs, marker="x", c="red"] plt.show[]
đầu ra
Chúng tôi đã sử dụng các thông số
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]5 và
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]6 để thay đổi kiểu dáng và màu sắc của các điểm riêng lẻ
Sửa đổi các giới hạn trục và đánh dấu
Phạm vi và khoảng giá trị trên các trục được đặt theo mặc định dựa trên các giá trị đầu vào
Tuy nhiên, chúng tôi có thể thay đổi chúng thành các giá trị mong muốn của chúng tôi
Hãy để chúng tôi tạo một biểu đồ phân tán khác biểu thị một tập hợp các điểm dữ liệu mới, sau đó sửa đổi phạm vi và khoảng trục của nó
np.random.seed[42] ages = np.random.randint[low = 8, high = 30, size=35] heights = np.random.randint[130, 195, 35] weights = np.random.randint[30, 160, 35] fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs = heights, ys = weights, zs = ages] ax.set_title["Age-wise body weight-height distribution"] ax.set_xlabel["Height [cm]"] ax.set_ylabel["Weight [kg]"] ax.set_zlabel["Age [years]"] plt.show[]
đầu ra
Chúng tôi đã vẽ dữ liệu của 3 biến là chiều cao, cân nặng và tuổi trên 3 trục
Như bạn có thể thấy, các giới hạn trên trục X, Y và Z đã được gán tự động dựa trên dữ liệu đầu vào
Chúng ta hãy sửa đổi giới hạn tối thiểu và tối đa trên mỗi trục, bằng cách gọi các phương thức
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]7,
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]8 và
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]9
ax.set_xlim[100,200] ax.set_ylim[20,160] ax.set_zlim[5,35] plt.show[]
đầu ra
Các giới hạn cho ba trục đã được sửa đổi dựa trên các giá trị tối thiểu và tối đa mà chúng tôi đã chuyển cho các phương thức tương ứng
Chúng tôi cũng có thể sửa đổi các dấu kiểm riêng lẻ cho từng trục. Hiện tại, các tick trên trục X là [100,120,140,160,180,200]
Hãy để chúng tôi cập nhật điều này thành [100,125,150,175,200]
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']0
đầu ra
Tương tự như vậy, chúng ta có thể cập nhật các dấu chọn Y và Z bằng cách sử dụng các phương pháp
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]0 và
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]1
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']1
đầu ra
Thay đổi kích thước của cốt truyện
Nếu chúng ta muốn các ô của mình lớn hơn hoặc nhỏ hơn kích thước mặc định, chúng ta có thể dễ dàng đặt kích thước của ô khi khởi tạo hình – sử dụng tham số
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]2 của phương thức
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]3,
hoặc chúng ta có thể cập nhật kích thước của một ô hiện có bằng cách gọi phương thức
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]4 trên đối tượng hình
Trong cả hai cách tiếp cận, chúng ta phải chỉ định chiều rộng và chiều cao của ô tính bằng inch
Vì chúng ta đã thấy trước đó, bây giờ chúng ta hãy xem cách tiếp cận thứ hai i. e sửa đổi kích thước của một ô hiện có
Chúng tôi sẽ thay đổi kích thước của biểu đồ phân tán thành 6 × 6 inch
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']2
đầu ra
Kích thước của biểu đồ phân tán của chúng tôi đã được tăng lên so với kích thước mặc định trước đây của nó
Tắt/bật đường lưới
Tất cả các ô mà chúng tôi đã vẽ cho đến nay đều có đường lưới trên chúng theo mặc định
Chúng ta có thể thay đổi điều này bằng cách gọi phương thức
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]5 của đối tượng trục và chuyển giá trị 'Sai. ’
Nếu chúng ta muốn các đường lưới trở lại, chúng ta có thể gọi phương thức tương tự với tham số 'True. ’
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']3
đầu ra
Đặt màu cốt truyện 3D dựa trên lớp
Chúng ta hãy giả sử rằng các cá nhân được đại diện bởi biểu đồ phân tán của chúng ta được chia thành hai hoặc nhiều loại
Chúng ta có thể biểu thị thông tin này bằng cách vẽ các cá nhân của từng danh mục bằng một màu khác
Chẳng hạn, chúng ta hãy chia dữ liệu của mình thành các danh mục 'Nam' và 'Nữ'
Chúng tôi sẽ tạo một mảng mới có cùng kích thước với số điểm dữ liệu và gán giá trị 0 cho 'Nam' và 1 cho danh mục 'Nữ'
Sau đó, chúng tôi sẽ chuyển mảng này đến tham số màu
import numpy as np x = np.linspace[−4*np.pi,4*np.pi,50] y = np.linspace[−4*np.pi,4*np.pi,50] z = x**2 + y**2 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.plot[x,y,z] plt.show[]6 khi tạo biểu đồ phân tán
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']4
đầu ra
Cốt truyện hiện hiển thị từng loại trong số hai loại với một màu khác nhau
Nhưng làm thế nào chúng ta biết màu nào tương ứng với loại nào?
Chúng ta có thể thêm một ‘thanh màu’ để giải quyết vấn đề này
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']5
đầu ra
Đặt huyền thoại
Thường thì chúng tôi có nhiều hơn 1 bộ dữ liệu mà chúng tôi muốn vẽ trên cùng một hình
Trong tình huống như vậy, chúng ta phải gán nhãn cho từng ô và thêm chú thích vào hình để phân biệt các ô khác nhau với nhau
Ví dụ: giả sử dữ liệu tuổi-chiều cao-cân nặng của chúng tôi được thu thập từ 3 tiểu bang của Hoa Kỳ là Florida, Georgia và California
Chúng tôi muốn vẽ các biểu đồ phân tán cho 3 trạng thái và thêm một chú thích để phân biệt chúng với nhau
Hãy để chúng tôi tạo 3 ô trong vòng lặp for và gán một nhãn khác cho chúng mỗi lần
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']6
đầu ra
Đánh dấu lô có kích thước khác nhau
Trong các biểu đồ phân tán mà chúng ta đã thấy cho đến nay, tất cả các điểm đánh dấu đều có kích thước không đổi
Chúng tôi có thể thay đổi kích thước của điểm đánh dấu bằng cách chuyển các giá trị tùy chỉnh vào tham số
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]7 của biểu đồ phân tán
Chúng tôi có thể chuyển một số duy nhất để đặt tất cả các điểm đánh dấu thành một kích thước cố định mới hoặc chúng tôi có thể cung cấp một mảng các giá trị, trong đó mỗi giá trị đại diện cho kích thước của một điểm đánh dấu
Trong ví dụ của chúng tôi, chúng tôi sẽ tính toán một biến mới gọi là 'bmi' từ chiều cao và cân nặng của các cá nhân và làm cho kích thước của các điểm đánh dấu riêng lẻ tỷ lệ thuận với giá trị BMI của họ
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']7
đầu ra
Kích thước của các điểm đánh dấu trong biểu đồ này càng lớn thì chỉ số BMI của những cá nhân đó càng cao và ngược lại
Vẽ sơ đồ phân phối Gaussian
Bạn có thể biết về một phân phối Gaussian đơn biến được vẽ trên mặt phẳng 2D, thường được gọi là 'đường cong hình chuông'. ’
nguồn. https. // vi. wikipedia. org/wiki/Tệp. Bình thường_Distribution_PDF. svg
Chúng ta cũng có thể vẽ sơ đồ phân phối Gaussian trong không gian 3D, sử dụng phân phối chuẩn đa biến
Chúng ta phải xác định các biến X và Y và vẽ biểu đồ phân phối xác suất của chúng cùng nhau
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']8
đầu ra
Sử dụng phương pháp
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]8, chúng ta có thể tạo các bề mặt tương tự trong không gian 3D
Vẽ một đa giác 3D
Chúng ta cũng có thể vẽ đa giác với các đỉnh 3 chiều trong Python
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d']9
đầu ra
Xoay một cốt truyện 3D bằng chuột
Để tạo một biểu đồ tương tác trong Jupyter Notebook, bạn nên chạy
lệnh ma thuật
np.random.seed[42] xs = np.random.random[100]*10+20 ys = np.random.random[100]*5+7 zs = np.random.random[100]*15+50 fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] ax.scatter[xs,ys,zs] plt.show[]9 ở đầu cuốn sổ
Điều này cho phép chúng tôi tương tác với các ô 3D, bằng cách phóng to và thu nhỏ ô, cũng như xoay chúng theo bất kỳ hướng nào
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]0
đầu ra
Vẽ hai bản phân phối 3D khác nhau
Chúng ta có thể thêm hai biểu đồ 3D khác nhau vào cùng một hình, với sự trợ giúp của phương pháp
ax.set_title["Atom velocity distribution"] plt.show[]0
Số có 3 chữ số mà chúng tôi cung cấp cho phương thức cho biết số lượng hàng và cột trong lưới cũng như vị trí của ô hiện tại trong lưới
Hai chữ số đầu tiên cho biết tổng số hàng và cột chúng ta cần chia hình trong
Chữ số cuối cùng cho biết vị trí của ô con trong lưới
Ví dụ: nếu chúng ta chuyển giá trị 223 cho phương thức
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]6, thì chúng ta đang đề cập đến ô thứ 3 trong lưới 2×2 [xem xét thứ tự hàng đầu tiên]
Bây giờ chúng ta hãy xem một ví dụ trong đó chúng ta vẽ hai bản phân phối khác nhau trên một ô duy nhất
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]1
đầu ra
Chúng ta có thể vẽ bao nhiêu ô con tùy thích theo cách này, miễn là chúng ta khớp chúng ngay trong lưới
Xuất biểu đồ Python 3D sang HTML
Nếu chúng ta muốn nhúng một hình đồ thị 3D vào một trang HTML mà không cần lưu nó dưới dạng tệp hình ảnh trước,
chúng ta có thể làm như vậy bằng cách mã hóa hình thành 'base64' và sau đó chèn nó vào đúng vị trí trong thẻ HTML
ax.set_title["Atom velocity distribution"] plt.show[]2
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]2
Bây giờ chúng ta có thể viết chuỗi mã HTML này vào một tệp HTML, sau đó chúng ta có thể xem tệp này trong trình duyệt
fig = plt.figure[figsize=[4,4]] ax = fig.add_subplot[111, projection='3d'] ax.scatter[2,3,4] # plot the point [2,3,4] on the figure plt.show[]3
đầu ra
Phần kết luận
Trong hướng dẫn này, chúng ta đã học cách vẽ đồ thị 3D trong Python bằng thư viện matplotlib
Chúng tôi bắt đầu bằng cách vẽ một điểm trong không gian tọa độ 3D, sau đó vẽ các đường cong 3D và các biểu đồ phân tán
Sau đó, chúng tôi đã học được nhiều cách khác nhau để tùy chỉnh biểu đồ 3D trong Python, chẳng hạn như thêm tiêu đề, chú giải, nhãn trục vào biểu đồ, thay đổi kích thước biểu đồ, bật/tắt đường lưới trên biểu đồ, sửa đổi dấu trục, v.v.
Chúng tôi cũng đã học cách thay đổi kích thước và màu sắc của điểm đánh dấu dựa trên danh mục điểm dữ liệu
Sau đó, chúng tôi đã học cách vẽ các bề mặt trong không gian 3D. Chúng tôi đã vẽ sơ đồ phân phối Gaussian và đa giác 3D bằng Python
Sau đó, chúng tôi đã xem cách chúng tôi có thể tương tác với biểu đồ Python 3D trong sổ ghi chép Jupyter
Cuối cùng, chúng ta đã học cách vẽ nhiều ô con trên cùng một hình và cách xuất một hình thành mã HTML