У меня есть текстовый файл, содержащий значения интенсивности 500x500. Я пытаюсь создать 3D-график этих данных, используя Python-XY. Только конкретная часть этого массива 500x500 должна быть построена (235: 268, 210: 280).Python-xy 3d plot из текстового файла
Вот одна из многих попыток кода Python-XY до сих пор:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
data = np.genfromtxt('Fig2.txt')
X = np.linspace(235,268,num=33)
Y = np.linspace(210,280,num=70)
x,y = np.meshgrid (X,Y)
Z = data[235:268,210:280]
ax.plot_surface(x,y,Z, rstride=1, cstride=1, cmap=cm.jet)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
Я попытался несколько различных кодов, чтобы произвести этот сюжет, но есть конкретная ошибка, которая продолжает выскакивать:
ValueError: shape mismatch: two or more arrays have incompatible dimensions on axis 0.
Я предполагаю, что это означает, что оси X и Y являются несовместимыми, но я не уверен, почему это так. Есть ли где-нибудь, в частности, что я ошибаюсь здесь?
Спасибо. Это привело меня к обнаружению проблемы. Я считаю, что может возникнуть проблема с написанием текстового файла. Печать данных [0,1: 10] или любое изменение этого параметра дает массив [nan, nan ... nan]. Формат текстового файла записывается как '[4.001e + 01, 4.002e + 01 ... 4.500e + 01]', '[4.501e + 01, 4.502e + 01 ... 5.000e + 01] ', ' ... 500 строк' '[10.001e + 01, 10.002e + 01 ... 10.500e + 01]' Может быть, проблема в том, что нет никаких отступов, кроме запятых разделение каждого элемента или способ включения «e + 01»? – Azaxa