Matplotlib页

2024-03-29 11:21:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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')

Tags: 数据inimportformatplotliblinepltfile