Сложность построения двухмерной поверхности lognorm - PullRequest
0 голосов
/ 25 октября 2018

вот код, который я использую, и я также приложил вывод.Я хотел бы построить двумерную функцию lognorm как трехмерную поверхность, вышеупомянутый код должен делать это, однако, результат приводит к перекосу всей плоскости, а не только значений z.любая помощь или предложения будут с благодарностью.

dx = 90 - (-90)
dy = 90 - (-90)
c = [dx + dx/2.0, dy+dy/2.0]
z = np.zeros((400, 400))
x = np.linspace(-90, 90, 400)
y = x.copy()
for i in range(len(x)):
    for j in range(len(y)):
        p =[x[i], y[j]]
        d = math.sqrt((p[0]-c[0])**2 + (p[1]-c[1])**2)
        t = d

        z[i][j] = lognorm.pdf(t, 1.2)




fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.plot_surface(x,y, z, cmap = 'viridis')



plt.show()

вывод предоставленного кода

enter image description here

в идеале хотелось бы, чтобы это выгляделочто-то вроде этого. это изображение здесь

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, вы хотели построить трехмерную поверхность, и вот пример:

#!/usr/bin/python3
# 2018/10/25 14:44 (+0800)
# Plot a 3D surface 

from scipy.stats import norm, lognorm
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

xy = np.linspace(-5, 5, 400)
xx, yy = np.meshgrid(xy)
t = np.sqrt(xx**2 + yy**2)
zz = lognorm.pdf(t, 1.2)

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.plot_surface(xx,yy, zz, cmap = 'viridis')

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...