我正在使用Matplotlib基于一些数据创建图像。所有的数据都在0到1的范围内,我试图根据其值使用颜色映射来着色数据,并且在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')
e1cx
、e1cy
、e1cz
定义在哪里?你检查过是否真的有非零数据了吗? - Avaris