странное поведение сюжета matplotlib на матричном элементе numpy - PullRequest
2 голосов
/ 19 сентября 2019

Я использую python3.X .

Я натолкнулся на очень странное поведение в matplotlib на элементе матрицы numpy в качестве иллюстрации. Я хотел построить простой sinc() функция:

import numpy as np
import matplotlib.pyplot as plt

t=np.matrix(np.linspace(-10,10,1024))
x=np.sinc(t)

plt.plot(t,x,color='blue', linestyle='solid', linewidth=2)
plt.show()

Приведенный выше фрагмент кода генерирует: empty figure - STRANGE

При замене plt.plot (...) с:

plt.plot(t,x,'-ob')

создает:

desired result with 'o'

Я не мог понять причину такого поведения, был бы признателен за помощь

1 Ответ

2 голосов
/ 19 сентября 2019

Согласно документам , при использовании двумерных массивов plot интерпретирует столбцы как отдельные наборы данных.Следовательно, в вашем первом случае вы строите 1024 линии по одной точке.Поскольку линейные графики работают путем рисования линий между точками, ничего не отображается:

t=np.matrix(np.linspace(-10,10,1024))
x=np.sinc(t)

plt.plot(t,x,color='blue', linestyle='solid', linewidth=2)
# plot shows nothing

Переместите ваши массивы в один столбец, и все будет работать нормально:

plt.plot(t.T,x.T,color='blue', linestyle='solid', linewidth=2)
# plot shows line

2-й случай работает хорошо, потому что при построении точек одна рисуется для каждой точки данных.Хотя, возможно, еще быстрее построить только один набор данных:

plt.plot(t.T,x.T,'-ob')
# same output, probably faster
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...