yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

この記事は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()