2016-02-29 2 views
0

У меня возникли проблемы с выходом моего кода для создания контура участка 2d. Я показываю результат ниже. enter image description hereРазмер и действие контурного графика

Как видно, ось y сильно искажена, и, тем не менее, мой код, кажется, ничего не содержит в себе, что должно вызвать это. Мой код показан ниже:

#vel_array, Rpl_array, and mass_loss_values are all some lists with the same length, but which I have not given here. 

# Set up a regular grid of interpolation points 
xi, yi = np.linspace(min(np.array(vel_array)), max(np.array(vel_array)), 100), np.linspace(min(np.array(Rpl_array)), max(np.array(Rpl_array)), 100) 
xi, yi = np.meshgrid(xi, yi) 

# Interpolate 
rbf = Rbf(np.array(vel_array), np.array(Rpl_array), np.array(mass_loss_values), function='cubic') 
zi = rbf(xi, yi) 
mass_loss_values=np.array(mass_loss_values) 
vel_array=np.array(vel_array) 
Rpl_array=np.array(Rpl_array) 
plt.imshow(zi, vmin=min(mass_loss_values), vmax=max(mass_loss_values), origin='lower', 
      extent=[min(vel_array), max(vel_array), min(Rpl_array), max(Rpl_array)]) 
plt.scatter(np.array(vel_array), np.array(Rpl_array), c=np.array(mass_loss_values)) 
plt.colorbar() 
plt.show() 

Я бы оценил помощь.

ответ

1

У Вас есть х диапазон 40000, но у диапазон только 1000.

imshow по умолчанию устанавливает соотношение сторон equal, что приводит к очень большим соотношением сторон (40: 1). Попробуйте установить aspect='auto' в качестве опции в вашей команде imshow:

plt.imshow(
    zi, 
    vmin=min(mass_loss_values), 
    vmax=max(mass_loss_values), 
    origin='lower', 
    extent=[min(vel_array), max(vel_array), min(Rpl_array), max(Rpl_array)], 
    aspect='auto' 
    ) 
Смежные вопросы