Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

5

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng để vẽ 3D yếu tố phóng đại trong các rung động cho nhiều loại giảm xóc. Để đơn giản hóa nó cho những người không biết nó là gì, về cơ bản, bạn có 3 biến:

  • Beta, thay đổi giữa 0 và vô hạn, nhưng tôi muốn hình dung nó từ 0 đến 3, trong các khoảng 0,2.
  • Tỷ lệ giảm xóc, D, thay đổi giữa 0 và vô hạn, nhưng tôi muốn vẽ nó từ 0 đến 1, trong các khoảng 0,1.
  • Cuối cùng, Nu, là một hàm thay đổi tùy theo hai biến trước.

Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

Trực giác của tôi nói rằng tôi nên vạch ra điều này với (x, y, z) = (beta, d, nu), nhưng tôi chỉ bắt đầu sử dụng thư viện này và tôi là người mới sử dụng nó, tôi chỉ sử dụng nó khi tôi cần Để hình dung hoặc tính toán các vấn đề trong lớp. Tôi đã thử tạo 2 mảng cho Beta và D, nhưng tôi không biết tôi nên tạo mảng cho NU, vì nó phụ thuộc vào cả hai.

Đây là đoạn mã tôi có cho đến bây giờ:

    import math
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D


nu = []
b = [0.1 + i / 100 for i in range(0, 510)]
damp = [0.1 + i/10 for i in range(0,510)]

for d in damp:
    nu_new = []
    nu.append(nu_new)
    for beta in b:
        nu_new.append( math.sqrt(1+(2*d*beta)**2)/ math.sqrt((1-beta**2)**2+(2*d*beta)**2))

fig = plt.figure()
ax = Axes3D(fig)
ax.plot(b, d, nu)
plt.show()

Tôi bị mắc kẹt khi cố gắng âm mưu này, vì vậy nếu bạn có bất kỳ đề nghị nào tôi sẽ rất vui.

Hỏi ngày 9 tháng 8 năm 2018 lúc 10:58Aug 9, 2018 at 10:58

Nếu bạn đang sử dụng numpy, thì đừng sử dụng mô -đun math. Numpy như tất cả các chức năng toán học được tích hợp nhưng chúng hoạt động trên các mảng numpy tốt hơn nhiều. Chúng ta có thể tính toán Nu tại tất cả các giá trị B, D của chúng ta với sự trợ giúp của một meshgrid.

Meshgrid có thể lấy 2 mảng 1D và trả về 2 mảng 2D sao cho mọi chỉ mục trong các mảng tương ứng với một cặp phần tử duy nhất từ ​​các mảng 1D gốc.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

b = np.arange(0.2, 3.2, 0.2)
d = np.arange(0.1, 1.0, 0.1)

B, D = np.meshgrid(b, d)
nu = np.sqrt( 1 + (2*D*B)**2 ) / np.sqrt( (1-B**2)**2 + (2*D*B)**2)

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(B, D, nu)
plt.xlabel('b')
plt.ylabel('d')
plt.show()

Điều này tạo ra:

Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

Ngoài ra, các sơ đồ 3D có xu hướng chặn nhìn thấy tất cả các dữ liệu (bởi vì một sự tăng đột biến ẩn những thứ đằng sau nó). Tôi muốn giới thiệu một pcolormesh hoặc một lô đường viền. Trong trường hợp sau, 6 dòng cuối cùng trở thành:

plt.contourf(B, D, nu)
plt.colorbar()
plt.xlabel('b')
plt.ylabel('d')
plt.show()

sản xuất:

Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

Đã trả lời ngày 11 tháng 8 năm 2018 lúc 17:36Aug 11, 2018 at 17:36

Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

Điều này nên hoạt động: Tôi không phải là một chuyên gia Python và đặc biệt là hai vòng cho các vòng lặp có thể rất không yến mạch, nhưng nó hoàn thành công việc.

import math
import matplotlib.pyplot as plt
import numpy as np

b = np.arange(0.2, 3.2, 0.2)
d = np.arange(0.1, 1.0, 0.1)
nu = np.zeros( (b.size, d.size) )
counter_y = 0

for deta in d:
    counter_x = 0
    for beta in b:
        nu[counter_x, counter_y] = math.sqrt( 1 + (2*deta*beta)**2 ) / math.sqrt( (1-beta**2)**2 + (2*deta*beta)**2)
        counter_x += 1
    counter_y += 1

X, Y = np.meshgrid(d, b)

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.plot_surface(X, Y, nu)

Đã trả lời ngày 9 tháng 8 năm 2018 lúc 11:47Aug 9, 2018 at 11:47

0

Những gì bạn cần là trước tiên để tạo một matplotlib figure.

fig = plt.figure()
ax = Axes3D(fig)
ax.plot(b, d, nu)
plt.show()

Hơn nữa, tất cả các biến của bạn phải có cùng kích thước. Vì vậy, biến d của bạn phải là một mảng có cùng độ dài với các loại khác.

Nếu bạn biến biến của mình d thành mảng

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

b = np.arange(0.2, 3.2, 0.2)
d = np.arange(0.1, 1.0, 0.1)

B, D = np.meshgrid(b, d)
nu = np.sqrt( 1 + (2*D*B)**2 ) / np.sqrt( (1-B**2)**2 + (2*D*B)**2)

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(B, D, nu)
plt.xlabel('b')
plt.ylabel('d')
plt.show()
1 có độ dài
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

b = np.arange(0.2, 3.2, 0.2)
d = np.arange(0.1, 1.0, 0.1)

B, D = np.meshgrid(b, d)
nu = np.sqrt( 1 + (2*D*B)**2 ) / np.sqrt( (1-B**2)**2 + (2*D*B)**2)

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(B, D, nu)
plt.xlabel('b')
plt.ylabel('d')
plt.show()
2 như những người khác, bạn sẽ theo dõi.

import math
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D


nu = []
b = [0.1 + i / 100 for i in range(0, 510)]
d = 0.1


for beta in b:
    nu.append( math.sqrt(1+(2*d*beta)**2)/ math.sqrt((1-beta**2)**2+(2*d*beta)**2))

#turned d into array of length 510 with 0.1 for each value
d = np.ones(510)*0.1


fig = plt.figure()
ax = Axes3D(fig)
ax.plot(b, d, nu)
plt.show()

bạn lấy:

Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

Đã trả lời ngày 9 tháng 8 năm 2018 lúc 11:20Aug 9, 2018 at 11:20

Hướng dẫn plot 2 variable function python - âm mưu 2 biến hàm python

Jkhadkajkhadkajkhadka

2.2436 huy hiệu vàng31 Huy hiệu bạc54 Huy hiệu đồng6 gold badges31 silver badges54 bronze badges

2

Làm thế nào để bạn vẽ hai chức năng thay đổi trong Python?

Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ ..
Tạo các điểm dữ liệu X, Y và Z ngẫu nhiên bằng cách sử dụng Numpy ..
Tạo một con số và một tập hợp các ô con ..
Tạo một biểu đồ phân tán với các điểm dữ liệu X, Y và Z ..
Tạo một thanh màu cho một ví dụ có thể điều trị được, S ..
Để hiển thị hình, sử dụng phương thức show () ..

Làm thế nào để bạn vẽ một hàm trong một biến trong Python?

Làm thế nào để vẽ một chức năng trong Python..
Trước hết, chúng tôi nhập chức năng pyplot từ mô -đun matplotlib ..
Sau đó, chúng tôi xác định các giá trị cho các biến X và Y, phụ thuộc vào loại hàm được vẽ ..
Sau đó, chúng tôi sử dụng PLT.Hàm âm mưu () để vẽ hình ..
Cuối cùng, chúng tôi sử dụng PLT ..

Làm thế nào để bạn vẽ hai biến trên y

Bằng cách sử dụng phương thức Twinx (), chúng tôi tạo hai trục y đôi.Trong ví dụ trên, bằng cách sử dụng phương thức Twinx (), chúng tôi tạo hai trục y và vẽ biểu đồ cùng một dữ liệu bằng cách sử dụng phương thức lô ().. In the above example, by using the twinx() method we create two y-axes and plot the same data by using the plot() method.

Làm thế nào để bạn vẽ dữ liệu 2D trong Python?

Biểu đồ 2D trong matplotlib..
Nhập Numpy như NP Nhập matplotlib.pyplot như plt def f (x): return x ** 2*np.....
def g (x): return x*np.exp (-x) xx = np.....
xx = np.Arange (bắt đầu = 0., ...
plt.xlabel ('trục x') plt.....
plt.saveFig ('MultiLecurvesfullRangedecorated.pdf') # tạo tệp pdf chứa hình ..
plt.....