Как matplotlib.pyplot.plot () соединяет точки рассеяния? - PullRequest
0 голосов
/ 04 апреля 2020

Когда мы используем pyplot.plot(x, y) в matplotlib, по умолчанию рисуется линейный график, который соединяет все точки (вершины). Я хочу понять, как именно plot() делает это? Как это соединяет точки? Использует ли он что-то вроде алгоритма Брезенхема для выполнения sh этого?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Если я plot две точки, я получаю список, содержащий один Line объект

In [58]: g=plt.gca()                                                                           
In [59]: g                                                                                     
Out[59]: <matplotlib.axes._subplots.AxesSubplot at 0x7fce94a26400>
In [60]: g.plot([0,1],[1,2])                                                                   
Out[60]: [<matplotlib.lines.Line2D at 0x7fce94a26160>]

https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib .lines.Line2D

Это в свою очередь имеет множество атрибутов и методов, хотя особенно уместным представляется объект Path

In [67]: aline._path                                                                           
Out[67]: 
Path(array([[0., 1.],
       [1., 2.]]), None)
In [68]: aline._path.__dict__                                                                  
Out[68]: 
{'_vertices': array([[0., 1.],
        [1., 2.]]),
 '_codes': None,
 '_interpolation_steps': 1,
 '_simplify_threshold': 0.1111111111111111,
 '_should_simplify': False,
 '_has_nonfinite': False,
 '_readonly': False}

https://matplotlib.org/api/path_api.html#matplotlib .path.Path

Примечание его типы кодов включают в себя такие направления рисования пером, как: move to и line to. Графические серверы часто принимают такие команды, как: «поставить перо на х», «нарисовать линию на у», «поднять перо». Бэкэнд обеспечивает интерполяцию точек между x и y, а не командный код. В этом случае edge вам недоступен.

Хотя он не использует matplotlib, вы можете посчитать графический пакет turtle поучительным. Это позволяет вам управлять чертежом pen напрямую.

https://docs.python.org/3/library/turtle.html

0 голосов
/ 04 апреля 2020

Matplotlib не делает ничего, кроме как соединяет точки в том порядке, в котором они были даны

Вы передаете два массива с координатами x и y. Matplotlib берет первую точку (x1, y1) и dr aws линию для второй пары (x2, y2), затем от второй пары к третьей и так далее до последней пары

x = [1,2,3]
y = [1,5,2]
plt.plot(x,y, 'ro-')

enter image description here

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