Как настроить оси X и Y в Sympy? - PullRequest
0 голосов
/ 05 января 2020

Я создал график в sympy и хотел бы настроить оси X и Y. Я хочу превратить их в красный и разбить их. Я посмотрел вокруг и попробовал кое-что, но, похоже, ничего не работает, например:

plt.axhline(linewidth = 1, linestyle = '--', color = 'red')
plt.axvline(linewidth = 1, linestyle = '--', color = 'red')

Есть ли способы сделать это, которые действительно сработают?

Заранее спасибо!

1 Ответ

1 голос
/ 05 января 2020

Исходный код Sympy */sympy/plotting/plot.py содержит следующий комментарий:

Особенно, если вам нужны графики, готовые к публикации, и вам недостаточно этого модуля - просто получите атрибут _backend и добавьте все, что вы хочу прямо к этому. В случае matplotlib (общий способ отображения данных в python) просто скопируйте _backend.fig, который является цифрой, и _backend.ax, который является осью, и работайте с ними так же, как с любым другим объектом matplotlib.

Это означает, что в общем случае сюжеты Sympy могут быть изменены, изменяя базовый объект Axes, доступ к которому можно получить с помощью атрибута _backend экземпляра plot Sympy.

Чтобы удовлетворить ваши указанные c запросы, каждый Axes содержит OrderedDict из Spine объектов, которые вы хотите изменить, это 'bottom'left' (для изменения этих объектов у вас есть использовать их set_x методы)

In [33]: from sympy import * 
    ...: x = symbols('x') 
    ...: p = plot(sin(x))

    ...: for spine in ('bottom', 'left'):
    ...:     p._backend.ax.spines[spine].set_linestyle((0, (5, 10))) 
    ...:     p._backend.ax.spines[spine].set_edgecolor('red')

    ...: p._backend.fig.savefig('Figure_1.png')

производит enter image description here

Примечание: если использовать p.save('...'), то цифра сбрасывается, и они будут Я пропустил любые изменения, которые они сделали, поэтому я использовал метод savefig базового объекта Figure, доступ к которому снова осуществлялся с помощью атрибута _backend.

...