この記事は3年以上前に書かれた記事で内容が古い可能性があります
【備忘】sympyのtips(グラフを合成する)
2020-03-07
sympyのtips備忘録
グラフを合成するやり方はあまりググっても出てこなかったのでメモ
参考:微分と積分ってなに? (概念理解とsympy)
参考:sympyを使って微分積分した結果をグラフにplotする
グラフを合成するには、「extend」を使う
p4.extend(p3) # p4のグラフにp3のグラフを合成
以下は例
元の線だけのグラフに
各三角を合成すると(上段)、下段のようになる
% cat extend_work.py #!/usr/bin/env python # -*- coding: utf-8 -*- import sympy as sp if __name__ == '__main__': x,y = sp.symbols('x,y') # 変数定義 f_org = x * 2 # 「x *2」の式を「f_org」とおく f_inpl_1 = sp.And(2 * x > y, x < 10) # xが10までの面積を「f_inpl_1」とおく f_inpl_2 = sp.And(2 * x > y, x < 20) # xが20までの面積を「f_inpl_2」とおく f_inpl_3 = sp.And(2 * x > y, x < 30) # xが30までの面積を「f_inpl_3」とおく # 「function」のグラフ作成 p1 = sp.plot(f_org, (x,0,30), lylim = [0,90], show = False, xlabel = "time", ylabel = "speed") p2 = sp.plot_implicit(f_inpl_1, (x,0,30), (y,0,90), show = False, xlabel = "time", ylabel = "speed", line_color = "blue") p3 = sp.plot_implicit(f_inpl_2, (x,0,30), (y,0,90), show = False, xlabel = "time", ylabel = "speed", line_color = "deepskyblue") p4 = sp.plot_implicit(f_inpl_3, (x,0,30), (y,0,90), legend = True, show = False, xlabel = "time", ylabel = "speed", line_color = "lightblue", title = "function") p1.extend(p4) # p4のグラフにp3のグラフを合成 p1.extend(p3) # p4のグラフにp2のグラフを合成 p1.extend(p2) # p4のグラフにp1のグラフを合成 # グラフ表示 p = sp.plotting.PlotGrid(2, 3, p2, p3, p4, p1, legend = True, show = False) p.show()