Ошибка streamplot matplotlib для определенного числа точек сетки - PullRequest
0 голосов
/ 16 сентября 2018

Следующий минимальный фрагмент кода завершается ошибкой, когда n=29, но работает, когда n=28 или n=30.

import numpy
import matplotlib.pyplot as plt
x = np.linspace(0,1,n)
plt.streamplot(x,x,np.meshgrid(x,x)[0],np.meshgrid(x,x)[1])
plt.show()

Ошибка, получаемая, когда n=29 равна

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
~/.local/lib/python3.6/site-packages/matplotlib/streamplot.py in _integrate_rk12(x0, y0, dmap, f, maxlength)
    526         try:
--> 527             k1x, k1y = f(xi, yi)
    528             k2x, k2y = f(xi + ds * k1x,

~/.local/lib/python3.6/site-packages/matplotlib/streamplot.py in backward_time(xi, yi)
    434     def backward_time(xi, yi):
--> 435         dxi, dyi = forward_time(xi, yi)
    436         return -dxi, -dyi

~/.local/lib/python3.6/site-packages/matplotlib/streamplot.py in forward_time(xi, yi)
    425     def forward_time(xi, yi):
--> 426         ds_dt = interpgrid(speed, xi, yi)
    427         if ds_dt == 0:

~/.local/lib/python3.6/site-packages/matplotlib/streamplot.py in interpgrid(a, xi, yi)
    619     a00 = a[y, x]
--> 620     a01 = a[y, xn]
    621     a10 = a[yn, x]

~/.local/lib/python3.6/site-packages/numpy/ma/core.py in __getitem__(self, indx)
   3196         # So it's easier to stick to the current version
-> 3197         dout = self.data[indx]
   3198         _mask = self._mask

IndexError: index 29 is out of bounds for axis 1 with size 29

Это сводило меня с ума на некоторое время.Графики генерируются, когда n = 28 или n = 30.Я даже проверил код на Google Collab, чтобы убедиться, что я не испортил свои библиотеки как-то.

Вот ссылка

Любая идея о том, почему это происходит

1 Ответ

0 голосов
/ 17 сентября 2018

Это связано с ошибкой индексации в серии matplotlib 2.2.x.Решено в matplotlib 3.x с этим патчем .Проблема github для созданной мной ошибки: здесь .Патч может быть перенесен на 2.2.x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...