3D-поверхность в matplotlib.pyplot не соответствует даннымPython

Программы на Python
Ответить
Anonymous
 3D-поверхность в matplotlib.pyplot не соответствует данным

Сообщение Anonymous »

Я пытаюсь построить простую трехмерную поверхность (только для тестирования). Мне кажется, что поверхность не соответствует матрице данных (определяемой как сумма двух входных векторов с использованием функции Numpy add.outer()).
Вот код Python:

Код: Выделить всё

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import cm
import tkinter as tk

# Create root window
root = tk.Tk()
root.title("Test 3D")
root.geometry("1400x900")

X = [1, 2, 3, 4, 5]
f_X = [50, 30, 10, -5, -20]
Y = [1, 2, 3, 4, 5]
f_Y = [-15, -5, 15, 30, 40]

Z = np.add.outer(f_X, f_Y)
print(Z)

max_Z = np.max(Z)
# Find the index of the maximum Z value
max_index = np.unravel_index(np.argmax(Z, axis=None), Z.shape)
print("max Z=", max_Z)
print("Indices:", max_index)
# Plot the surface
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
ax.plot_surface(X, Y, Z, cmap=cm.turbo, linewidth=0, antialiased=True)
ax.yaxis.set_major_locator(plt.MaxNLocator(10))  # Limits the number of ticks to 5
ax.set_xlabel("X-axis", linespacing=3.2)
ax.set_ylabel("Y-axis", linespacing=3.1)

max_canvas = FigureCanvasTkAgg(fig, master=root)
max_canvas.draw()  # Render the graph
max_canvas.get_tk_widget().pack(fill='both', expand=True)

# Start the tkinter loop
root.mainloop()
Максимальное значение Z равно 90 с индексами X=0 (где X=50) и Y=4 (где Y=40). На графике самая высокая точка поверхности находится в точках X=4 и Y=4.

Подробнее здесь: https://stackoverflow.com/questions/792 ... nd-to-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»