我正在使用Matplotlib根据一些数据创建一个图像。所有的数据都在0到1的范围内,我试图使用colormap根据数据的值给数据上色,这在Matlab中非常有效,但是当将代码转换为Python时,我只得到一个黑色的正方形作为输出。我相信这是因为我绘制的图像是错误的,所以它将所有数据绘制为0。我已经尝试搜索这个问题好几个小时了,我也尝试了plt.set_clim([0, 1])
但是似乎什么也没做。我对Python和Matplotlib还不熟悉,虽然我对编程(Java、javascript、PHP等)并不陌生,但我看不出哪里出错了。如果任何人在我的代码中看到任何明显不正确的地方,我将非常感激。
谢谢你
from numpy import *
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.colors as myColor
e1cx=[]
e1cy=[]
e1cz=[]
print("Reading files...")
in_file = open("eigenvector_1_component_x.txt", "rt")
for line in in_file.readlines():
e1cx.append([])
for i in line.split():
e1cx[-1].append(float(i))
in_file.close()
in_file = open("eigenvector_1_component_y.txt", "rt")
for line in in_file.readlines():
e1cy.append([])
for i in line.split():
e1cy[-1].append(float(i))
in_file.close()
in_file = open("eigenvector_1_component_z.txt", "rt")
for line in in_file.readlines():
e1cz.append([])
for i in line.split():
e1cz[-1].append(float(i))
in_file.close()
print("...done")
nx = 120
ny = 128
nz = 190
fx = zeros((nz,nx,ny))
fy = zeros((nz,nx,ny))
fz = zeros((nz,nx,ny))
z = 0
while z<nz-1:
x = 0
while x<nx:
y = 0
while y<ny:
fx[z][x][y]=e1cx[(z*128)+y][x]
fy[z][x][y]=e1cy[(z*128)+y][x]
fz[z][x][y]=e1cz[(z*128)+y][x]
y += 1
x += 1
z+=1
if((z % 10) == 0):
plt.figure(num=None)
plt.axis("off")
normals = myColor.Normalize(vmin=0,vmax=1)
plt.pcolor(fx[z][:][:],cmap='spectral', norm=normals)
filename = 'Imagex_%d' % z
plt.savefig(filename)
plt.colorbar(ticks=[0,2,4,6], format='%0.2f')
目前没有回答
相关问题 更多 >
编程相关推荐