メモ

備忘録です。

sympy.plottingでグラフと凡例がかぶるときの対処法

タイトルの通り。ざっくりメモのみで。

以下のコードだと

from sympy import *
import matplotlib.pyplot as plt

plt.style.use('seaborn-darkgrid')
x = Symbol('x')
p = plot(5*x, x**2, (x, 0, 10), legend = True)
p[0].line_color = '#FF0066'
p[0].label = '$y=5x$'
p[1].line_color = '#3366CC'
p[1].label = '$y=x^{2}$'
p.show()

p.save('plot.png')

f:id:mrikc:20180806001340p:plain
こうなる。
線と凡例がかぶってしまう。

Sympyのplotだと本家のmatplotlibみたいに凡例の位置を指定できない。
で、以下のように書くと凡例の位置を動かすことができた。

from sympy import *
import matplotlib.pyplot as plt

plt.style.use('seaborn-darkgrid')
x = Symbol('x')
p = plot(5*x, x**2, (x, 0, 10), legend = True)
p[0].line_color = '#FF0066'
p[0].label = '$y=5x$'
p[1].line_color = '#3366CC'
p[1].label = '$y=x^{2}$'
p.show()

fig = p._backend.fig
ax = p._backend.ax

#凡例の位置を修正
ax.legend(loc = 'upper left')

fig.savefig('plot_ok.png')

f:id:mrikc:20180806001838p:plain

これでOK。めでたし。