2D график с использованием imshow - нелинейное уравнение Шредингера в 2 + 1 измерениях - PullRequest
0 голосов
/ 17 марта 2020

Я работал над физической проблемой, включающей нелинейное уравнение Шредингера в 2 + 1 измерениях. Я хочу построить плотность, которая зависит от x и y для последнего временного шага моего моделирования. Данные, соответствующие этому моделированию, можно найти в этом файле h5 .

. Я написал следующий сценарий для графика

import matplotlib.pyplot as plt
import numpy as np
import h5py as h5

data = h5.File('groundstate_interacting_2D_n50u2.h5', 'r') 
dens = data['1']['norm_dens'] 
norma = data['2']['norm'] 
en_pot = data['3']['energyp'] 
en_kin = data['4']['energyk'] 
en_int = data['5']['energyint'] 
pot_chem = data['6']['potencialchem'] 
latticex = data['7']['x'] 
latticey = data['7']['y'] 
time    = data['7']['t']  
phireal = data['7']['phireal'] 
phiimag = data['7']['phiimag'] 

#computes the square of the module of the wave-function
distr = np.power(phireal[:,:,:],2) + np.power(phiimag[:,:,:],2) 

X, Y = np.meshgrid(latticex, latticey)

fig, ax = plt.subplots()
mdr = ax.imshow(distr[400,:,:], interpolation='gaussian',cmap='plasma')
ax.set_ylabel('Y',fontsize='large', fontweight='bold')
ax.set_xlabel('X',fontsize='large', fontweight='bold')
ax.grid(False)
fig.colorbar(mdr)

plt.show()

В моей задаче x и у определены в диапазоне (-4,0, 4,0) в решетках (latticex and latticey), содержащих 32 точки. Интересно, можно ли отобразить такой же диапазон на моем графике? Я пробовал некоторые вещи, но ни одна из них не сработала.

enter image description here

1 Ответ

0 голосов
/ 17 марта 2020

Поскольку вы не используете параметр norm для imshow, вы можете использовать vmin и vmax, чтобы указать верхнюю и нижнюю границы карты цветов. Пример:

import matplotlib.pyplot as plt
import numpy as np

a = np.outer(np.linspace(-10, 10, 100), np.linspace(-10, 10, 100))
a = (a / a.max() - 0.5) * 5.0

fig, ax = plt.subplots(1, figsize=(10,10))
m = ax.imshow(a, cmap='plasma', vmin=-4.0, vmax=4.0)
plt.show()

Без vmin и vmax:

enter image description here

С vmin и vmax :

enter image description here

И это будет отражено в цветовых полосах, хотя я пренебрегал ими для простоты.

...