Meu objetivo é traçar um gráfico de contorno de fluxo, mas em vez de curvas de contorno fechadas, plt.contour()
retorna uma série de linhas com a mesma altura.
Psi é definido como np.array
e tem um formato de 320 por 200.
fig, ax = plt.subplots()
r_end = grid_start[0] + grid_step[0] * grid_size[0]
z_end = grid_start[1] + grid_step[1] * grid_size[1]
X = np.arange(grid_start[0], r_end, grid_step[0]) # shape (200,)
Y = np.arange(grid_start[1], z_end, grid_step[1]) # shape (320,)
x, y = np.meshgrid(X, Y)
CS = ax.contour(x, y, Psi)
ax.clabel(CS, fontsize=10)
O resultado parece muito estranho:
Também criei gráficos de contorno com algum nivelamento para melhor visibilidade.
O resultado desejado é algo como isto: Contornos Psi desejados
Se eu remodelar o array fornecido para (3200,20), a periodicidade será perdida, mas ainda é estranho.
Como posso resolver esse problema? Obrigado pela ajuda.
Acho que seus dados originais têm um tamanho diferente: talvez 3200 por 20, não 320 por 200. (Você deveria verificar). O arquivo de dados tem 320 linhas de 200 colunas, mas suspeito que isso seja um artefato: talvez eles estivessem simplesmente limitados pelo comprimento da linha.
Se eu remodelar para 3200 por 20, isso é o que eu obtenho:
Curiosamente, se eu remodelar para 200 por 320, obtenho o seguinte, que, suponho, também pode estar correto. Não sei o que você está tentando obter como resultado final. Observe que tanto o Fortran quanto o Matlab usam a ordem de armazenamento de matrizes de colunas principais — o oposto do numpy do Python — então ainda acho que você precisa voltar para como o arquivo de dados foi criado. Você não está nos dando essa informação.