Rumah >pembangunan bahagian belakang >Tutorial Python >Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib
Teknologi imej tiga dimensi ialah salah satu teknologi paparan komputer paling canggih di dunia Mana-mana komputer biasa hanya perlu memasang pemalam untuk mempersembahkan produk tiga dimensi dalam pelayar web . Ia bukan sahaja seperti hidup, Dan ia boleh memaparkan proses gabungan produk secara dinamik, yang amat sesuai untuk penyemakan imbas jauh.
Imej tiga dimensi secara visual berlapis dan berwarna-warni, serta mempunyai kesan visual yang kuat, membolehkan penonton kekal dalam adegan itu untuk masa yang lama dan meninggalkan kesan yang mendalam. Gambar tiga dimensi memberi orang perasaan yang nyata dan hidup, watak sedia untuk dilihat, dan mereka mempunyai perasaan yang mengasyikkan, yang mempunyai nilai penghargaan artistik yang tinggi.
Mula-mula, anda perlu memasang perpustakaan Matplotlib, anda boleh menggunakan pip:
pip install matplotlib
Anggapkan bahawa pakej alat matplotlib telah dipasang.
Gunakan matplotlib.figure.Rajah untuk mencipta bingkai plot:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d')
Kodnya adalah seperti berikut:
Kesannya adalah seperti berikut:import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt mpl.rcParams['legend.fontsize'] = 10 fig = plt.figure() ax = fig.add_subplot(projection='3d') theta = np.linspace(-4 * np.pi, 4 * np.pi, 100) z = np.linspace(-2, 2, 100) r = z ** 2 + 1 x = r * np.sin(theta) y = r * np.cos(theta) ax.plot(x, y, z, label='parametric curve') ax.legend()
2. Plot serakan
Kodnya kira-kira seperti berikut:
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax): ''' Helper function to make an array of random numbers having shape (n, ) with each number distributed Uniform(vmin, vmax). ''' return (vmax - vmin)*np.random.rand(n) + vmin fig = plt.figure() ax = fig.add_subplot(111, projection='3d') n = 100 # For each set of style and range settings, plot n random points in the box # defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh]. for c, m, zlow, zhigh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]: xs = randrange(n, 23, 32) ys = randrange(n, 0, 100) zs = randrange(n, zlow, zhigh) ax.scatter(xs, ys, zs, c=c, marker=m) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show()
cstride: panjang langkah lajur
rcount : had atas barisRendering berjalan:
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(100, projection='3d') # Grab some test data. X, Y, Z = axes3d.get_test_data(0.12) # Plot a basic wireframe. ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10) plt.show()5. Sebarkan plot secara rawak Gunakan serakan untuk menjana plot serakan rawak. Takrifan fungsi:
#Takrifan fungsi
matplotlib.pyplot.scatter(x, y,s=Tiada, #Scatter array skalar
c =Tiada, #tatasusunan jujukan warna, jujukanfrom mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np n_radii = 8 n_angles = 36 radii = np.linspace(0.125, 1.0, n_radii) angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False) angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1) # points in the (x, y) plane. x = np.append(0, (radii*np.cos(angles)).flatten()) y = np.append(0, (radii*np.sin(angles)).flatten()) z = np.sin(-x*y) fig = plt.figure() ax = fig.add_subplot(projection='3d') ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True) plt.show()penanda=Tiada, #Gaya titik
cmap=Tiada, #gaya warna peta warna
norma=Tiada, #Normalisasi Kem warna ternormalvmin=Tiada, vmax =Tiada, #Sepadan dengan julat biasa di atas alpha=Tiada, #Transparency
linewidths=Tiada, #Lebar garisdata=Tiada,
**kwargs)
Kod sampel:
Kesan:
Atas ialah kandungan terperinci Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!