Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib

WBOY
Lepaskan: 2023-04-22 13:19:08
ke hadapan
1965 orang telah melayarinya

1.0 Pengenalan

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.

Kaedah dan jenis lukisan 3D 2.0

Mula-mula, anda perlu memasang perpustakaan Matplotlib, anda boleh menggunakan pip:

pip install matplotlib
Salin selepas log masuk

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')
Salin selepas log masuk

Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib

1 Penggunaan Asas: ax.plot(x,y,z,label=' ')

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()
Salin selepas log masuk

Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib2. Plot serakan

Sintaks asas:

ax.scatter(xs, ys, zs, s=20, c=None, depthshade= Benar, *args, *kwargs)

Kodnya kira-kira seperti berikut:

    xs,ys,zs: input data;
  • s: saiz titik taburan
  • c: warna, seperti c = 'r&rsquo ialah merah;
  • depthshase: transparent , True is transparent, lalai ialah True, False is legap
  • *args, dsb. ialah pembolehubah lanjutan, seperti maker = ‘o’, kemudian hasil taburan adalah dalam bentuk ’o‘
  • 3. Plot rangka wayar

    Penggunaan asas: ax.plot_wireframe(X, Y, Z, *args, **kwargs)
  • X, Y, Z : data input

rstride: panjang langkah baris
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()
Salin selepas log masuk

cstride: panjang langkah lajurCara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib

rcount : had atas baris

  • akaun: had atas bilangan lajur

  • Kod sampel:

  • 4. Rajah permukaan segi tiga (plot Tri-Surface)
  • Penggunaan asas: ax.plot_trisurf(*args, **kwargs)

    ax.plot_trisurf(* args, **kwargs)
  • X, Y, Z: Data

    Parameter lain adalah serupa dengan plot permukaan

Rendering 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()
Salin selepas log masuk

Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib

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, jujukan
from 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()
Salin selepas log masuk
penanda=Tiada, #Gaya titik

cmap=Tiada, #gaya warna peta warna

norma=Tiada, #Normalisasi Kem warna ternormal

vmin=Tiada, vmax =Tiada, #Sepadan dengan julat biasa di atas Cara membuat carta garis tiga dimensi menggunakan Python dan Matplotlib alpha=Tiada, #Transparency

linewidths=Tiada, #Lebar garis

verts=Tiada, #

edgecolors =Tiada, #Edge color

data=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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan