teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

2023/02/12 19:19

投稿

melian
melian

スコア21234

answer CHANGED
@@ -7,19 +7,35 @@
7
7
  X = [0, 1, 4, 9]
8
8
  Y = [0, 3, 9, 8]
9
9
  Z = [9, 4, 8, 3]
10
+ data = [X, Y, Z]
11
+ label = ['X', 'Y', 'Z']
12
+ l = len(data)
10
13
  x = range(len(X))
11
14
 
12
15
  fig = plt.figure()
13
- gs = fig.add_gridspec(3, hspace=0)
16
+ gs = fig.add_gridspec(l, hspace=0)
14
- axs = gs.subplots(sharex=True, sharey=True)
17
+ axs = gs.subplots(sharex=True)
15
18
 
16
19
  fig.suptitle('Multiple plots')
20
+ for i in range(l):
21
+ axs[i].scatter(x, data[i])
22
+ axs[i].set_xticks(x)
23
+ y1, y2 = axs[i].get_ylim()
24
+ print(y1, y2)
25
+ length = y2 - y1
17
- axs[0].plot(x, X); axs[0].set_ylabel('X', rotation=0, labelpad=10.0)
26
+ axs[i].set_ylim((y1-length*2, y2+length*2))
18
- axs[1].plot(x, Y); axs[1].set_ylabel('Y', rotation=0, labelpad=10.0)
27
+ axs[i].set_yticks([y1+(y2-y1)/2])
19
- axs[2].plot(x, Z); axs[2].set_ylabel('Z', rotation=0, labelpad=10.0)
28
+ axs[i].set_yticklabels(label[i])
20
29
 
30
+ for ax in axs:
21
- for ax in axs: ax.label_outer()
31
+ ax.label_outer()
32
+ ax.grid()
22
33
 
34
+ for ax in axs[:-1]:
35
+ ax.spines[['right', 'left', 'top', 'bottom']].set_visible(False)
36
+
37
+ axs[-1].spines[['right', 'left', 'top']].set_visible(False)
38
+
23
39
  plt.show()
24
40
  ```
25
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-02-12/7f12aea5-1e1c-414a-b644-8ee2bc1bb74f.png)
41
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-02-13/841415b9-cecb-47d4-8c37-f28cac09ce93.png)