回答編集履歴
1
複数のグラフの重ね書きに変更
answer
CHANGED
@@ -18,9 +18,6 @@
|
|
18
18
|
ts = [0, 1, 3, 4, 7]
|
19
19
|
ys = [0, 2, 3, 4, 0] # 最後の要素の値はグラフの結果には反映されない
|
20
20
|
|
21
|
-
tsi = []
|
22
|
-
ysi = []
|
23
|
-
|
24
21
|
interpolation_step = 0.1
|
25
22
|
|
26
23
|
for i in range(len(ts) - 1):
|
@@ -28,15 +25,20 @@
|
|
28
25
|
y0 = λ + ys[i]
|
29
26
|
lts = np.linspace(t0, t1, int((t1 - t0) / interpolation_step) + 2)
|
30
27
|
lys = f_at(t0, y0)(lts)
|
28
|
+
# 一つの連続区間のグラフをプロット
|
31
|
-
|
29
|
+
plt.plot(lts, lys, color='black')
|
30
|
+
if i > 0:
|
31
|
+
# 不連続点の破線をプロット
|
32
|
+
plt.plot((t0, t0), (pre_y, y0), dashes=(4, 4), color='black')
|
32
|
-
|
33
|
+
pre_y = lys[-1]
|
33
34
|
|
34
|
-
plt.plot(tsi, ysi)
|
35
35
|
plt.show()
|
36
36
|
```
|
37
|
-

|
38
|
+
~~不連続な点を破線で描画したり~~端点の円を描画する場合は
|
39
|
+
matplotlib.patches.Ellpise
|
40
|
+
~~matplotlib.patches.PathPatch~~
|
41
|
+
などを用いてもう少し凝ったことをしなくてはならないと思います。
|
38
42
|
|
39
|
-
|
43
|
+
---
|
40
|
-
matplotlib.patches.Ellpise
|
41
|
-
matplotlib.patches.PathPatch
|
42
|
-
|
44
|
+
訂正: 元の回答では不連続関数の座標値を全部連結して最後に1回だけプロットしてましたが、個々の連続部分を複数回プロットした方がより自然なやり方と思ったのでコードおよび結果の図を差し替えさせていただきました。
|