質問編集履歴

6

情報更新

2020/03/17 07:43

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -4,153 +4,7 @@
4
4
 
5
5
  Matplotlibで作成した画像を結合させたい。
6
6
 
7
- **1つめのグラフ画像**
8
-
9
- ![イメージ説明](43722658051ebb74156e846923ac2301.png)
10
-
11
-
12
-
13
- **2つめのグラフ画像**
14
-
15
- ![イメージ説明](dfdcee5cc2bc25fe0c7df8313f22d333.png)
16
-
17
-
18
-
19
- この2つのグラフを1つの図に作成するプログラムを作っています。
7
+ 2つのグラフを1つの図に作成するプログラムを作っています。
20
-
21
-
22
-
23
- ##プログラムコード
24
-
25
-
26
-
27
- ```python
28
-
29
- # データ取得
30
-
31
- sensordata = np.array(linedata)
32
-
33
-
34
-
35
- #fig = plt.figure()
36
-
37
- fig, axes = plt.subplots(figsize=(10,4),ncols=2)
38
-
39
-
40
-
41
- im1 = axes[0].imshow(sensordata, cmap="plasma",
42
-
43
- extent=[0,sensordata.shape[0],0,sensordata.shape[1]],
44
-
45
- interpolation="bicubic",
46
-
47
- aspect='auto',
48
-
49
- origin='lower')
50
-
51
-
52
-
53
- #軸ラベル設定
54
-
55
- axes[0].set_xlabel("X")
56
-
57
- axes[0].set_ylabel("Y")
58
-
59
-
60
-
61
- #軸目盛設定(設定方法を2つ記載)
62
-
63
- axes[0].set_xticks(np.arange(0, 9, 1))
64
-
65
- axes[0].set_yticks(np.arange(0, 9, 1))
66
-
67
- #im1 ColorBar設定
68
-
69
- cbar1 = fig.colorbar(im1, ax=axes[0])
70
-
71
- cbar1.set_label("Temp")
72
-
73
-
74
-
75
- X, Y = np.indices(sensordata.shape)
76
-
77
-
78
-
79
- # 描画する。
80
-
81
- axes[1] = fig.add_subplot(122, projection="3d")
82
-
83
-
84
-
85
- #散布図(dot)表示
86
-
87
- #s: Scale Default20
88
-
89
- im2 = axes[1].scatter(
90
-
91
- X.flat,
92
-
93
- Y.flat,
94
-
95
- sensordata.flat,
96
-
97
- c=sensordata.flat,
98
-
99
- cmap="jet",
100
-
101
- edgecolor="gray",
102
-
103
- s=160,
104
-
105
- )
106
-
107
-
108
-
109
- #面表示 alphaで透過設定
110
-
111
- axes[1].plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4)
112
-
113
-
114
-
115
- # カラーバー追加 (xmin, ymin, w, h) でカラーバーを表示する位置を指定
116
-
117
- cbar2 = fig.colorbar(im2, ax=axes[1])
118
-
119
- cbar2.set_label("Temp")
120
-
121
-
122
-
123
- #軸ラベル設定
124
-
125
- axes[1].set_xlabel("X")
126
-
127
- axes[1].set_ylabel("Y")
128
-
129
-
130
-
131
- #軸目盛設定
132
-
133
- temp_min = sensordata.min()
134
-
135
- temp_max = sensordata.max()
136
-
137
- axes[1].set_xticks(np.arange(0, 9, 1))
138
-
139
- axes[1].set_yticks(np.arange(0, 9, 1))
140
-
141
- axes[1].set_zticks(np.arange(temp_min, temp_max, 1))
142
-
143
-
144
-
145
- #余白調整
146
-
147
- plt.subplots_adjust(right=0.85)
148
-
149
- plt.subplots_adjust(wspace=0.15)
150
-
151
- plt.savefig('/home/pi/dev/data/thermo/bicubic_3D.png', format='png')
152
-
153
- ```
154
8
 
155
9
 
156
10
 
@@ -159,11 +13,3 @@
159
13
  プログラムを実行すると、次のような表示になってしまいます。
160
14
 
161
15
  右画像の周辺に枠(X, Yとも0~1の範囲)ができてしまいます。
162
-
163
- ![イメージ説明](c17f6a30bec93bbc80eef1a52d5fbb0b.png)
164
-
165
-
166
-
167
- **画像追加**
168
-
169
- ![イメージ説明](3e18d4477f08d36352ccac88ceb3358c.png)

5

画像を追加しました。

2020/03/17 07:43

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -161,3 +161,9 @@
161
161
  右画像の周辺に枠(X, Yとも0~1の範囲)ができてしまいます。
162
162
 
163
163
  ![イメージ説明](c17f6a30bec93bbc80eef1a52d5fbb0b.png)
164
+
165
+
166
+
167
+ **画像追加**
168
+
169
+ ![イメージ説明](3e18d4477f08d36352ccac88ceb3358c.png)

4

最新の情報に更新

2020/03/11 04:52

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -32,15 +32,13 @@
32
32
 
33
33
 
34
34
 
35
- fig = plt.figure()
35
+ #fig = plt.figure()
36
36
 
37
- axes1 = fig.add_subplot(1, 2, 1)
38
-
39
- axes2 = fig.add_subplot(1, 2, 2)
37
+ fig, axes = plt.subplots(figsize=(10,4),ncols=2)
40
38
 
41
39
 
42
40
 
43
- im1 = axes1.imshow(sensordata, cmap="plasma",
41
+ im1 = axes[0].imshow(sensordata, cmap="plasma",
44
42
 
45
43
  extent=[0,sensordata.shape[0],0,sensordata.shape[1]],
46
44
 
@@ -54,41 +52,25 @@
54
52
 
55
53
  #軸ラベル設定
56
54
 
57
- axes1.set_xlabel("X")
55
+ axes[0].set_xlabel("X")
58
56
 
59
- axes1.set_ylabel("Y")
57
+ axes[0].set_ylabel("Y")
60
58
 
61
59
 
62
60
 
63
61
  #軸目盛設定(設定方法を2つ記載)
64
62
 
65
- axes1.set_xticks(np.arange(0, 9, 1))
63
+ axes[0].set_xticks(np.arange(0, 9, 1))
66
64
 
67
- axes1.set_yticks(np.arange(0, 9, 1))
65
+ axes[0].set_yticks(np.arange(0, 9, 1))
66
+
67
+ #im1 ColorBar設定
68
+
69
+ cbar1 = fig.colorbar(im1, ax=axes[0])
70
+
71
+ cbar1.set_label("Temp")
68
72
 
69
73
 
70
-
71
- axpos = axes1.get_position()
72
-
73
- #Color Bar作成
74
-
75
- #add_axes([x軸の開始位置, y軸の開始位置, x軸の長さ(全体に対する比率), y軸の長さ(全体に対する比率)])
76
-
77
- cbar_ax = fig.add_axes([0.5, axpos.y0, 0.02, axpos.height])
78
-
79
- cbar = fig.colorbar(im1,cax=cbar_ax)
80
-
81
- cbar.set_label("Temp")
82
-
83
- #Title表示
84
-
85
- axes1.set_title(title, fontsize=12)
86
-
87
-
88
-
89
- temp_min = sensordata.min()
90
-
91
- temp_max = sensordata.max()
92
74
 
93
75
  X, Y = np.indices(sensordata.shape)
94
76
 
@@ -96,7 +78,7 @@
96
78
 
97
79
  # 描画する。
98
80
 
99
- axes2 = fig.add_subplot(122, projection="3d")
81
+ axes[1] = fig.add_subplot(122, projection="3d")
100
82
 
101
83
 
102
84
 
@@ -104,7 +86,7 @@
104
86
 
105
87
  #s: Scale Default20
106
88
 
107
- im2 = axes2.scatter(
89
+ im2 = axes[1].scatter(
108
90
 
109
91
  X.flat,
110
92
 
@@ -122,37 +104,41 @@
122
104
 
123
105
  )
124
106
 
107
+
108
+
109
+ #面表示 alphaで透過設定
110
+
125
- axes2.plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4)
111
+ axes[1].plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4)
112
+
113
+
126
114
 
127
115
  # カラーバー追加 (xmin, ymin, w, h) でカラーバーを表示する位置を指定
128
116
 
129
- cbar_ax = fig.add_axes((0.9, 0.3, 0.02, 0.4))
117
+ cbar2 = fig.colorbar(im2, ax=axes[1])
130
118
 
131
- cbar = fig.colorbar(im2, cax=cbar_ax)
119
+ cbar2.set_label("Temp")
132
120
 
133
- cbar.set_label("Temp")
121
+
134
122
 
135
123
  #軸ラベル設定
136
124
 
137
- axes2.set_xlabel("X")
125
+ axes[1].set_xlabel("X")
138
126
 
139
- axes2.set_ylabel("Y")
127
+ axes[1].set_ylabel("Y")
128
+
129
+
140
130
 
141
131
  #軸目盛設定
142
132
 
143
- axes2.set_xticks(np.arange(0, 9, 1))
133
+ temp_min = sensordata.min()
144
134
 
145
- axes2.set_yticks(np.arange(0, 9, 1))
135
+ temp_max = sensordata.max()
146
136
 
147
- axes2.set_zticks(np.arange(temp_min, temp_max, 1))
137
+ axes[1].set_xticks(np.arange(0, 9, 1))
148
138
 
149
- #Title表示
139
+ axes[1].set_yticks(np.arange(0, 9, 1))
150
140
 
151
- axes2.set_title(title, fontsize=12)
141
+ axes[1].set_zticks(np.arange(temp_min, temp_max, 1))
152
-
153
- # 視点
154
-
155
- axes2.view_init(30, -45)
156
142
 
157
143
 
158
144
 
@@ -172,20 +158,6 @@
172
158
 
173
159
  プログラムを実行すると、次のような表示になってしまいます。
174
160
 
175
- 左側画像(bicubic)カラーバー重なってしまいます。
161
+ 画像の周辺に枠(X, Yとも0~1の範囲)できてしまいます。
176
162
 
177
- 右側画像と左側画像、それぞれのカラバーの大きさを合わせたいと考えています。
178
-
179
- ![イメージ説明](c6c41c5dcb19a54881d5673710c333c5.png)
180
-
181
-
182
-
183
- このプログラムを実行すると、次のワーニングが表示されてしまいます。
184
-
185
- ```text
186
-
187
- /home/pi/.local/lib/python2.7/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
188
-
189
- warnings.warn(message, mplDeprecation, stacklevel=1)
190
-
191
- ```
163
+ ![イメジ説明](c17f6a30bec93bbc80eef1a52d5fbb0b.png)

3

ワーニング情報を更新しました。

2020/03/11 04:15

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -32,9 +32,15 @@
32
32
 
33
33
 
34
34
 
35
- fig, axes = plt.subplots(figsize=(8,4),ncols=2)
35
+ fig = plt.figure()
36
36
 
37
+ axes1 = fig.add_subplot(1, 2, 1)
38
+
39
+ axes2 = fig.add_subplot(1, 2, 2)
40
+
41
+
42
+
37
- im1 = axes[1].imshow(sensordata, cmap="plasma",
43
+ im1 = axes1.imshow(sensordata, cmap="plasma",
38
44
 
39
45
  extent=[0,sensordata.shape[0],0,sensordata.shape[1]],
40
46
 
@@ -48,35 +54,35 @@
48
54
 
49
55
  #軸ラベル設定
50
56
 
51
- axes[0].set_xlabel("X")
57
+ axes1.set_xlabel("X")
52
58
 
53
- axes[0].set_ylabel("Y")
59
+ axes1.set_ylabel("Y")
54
60
 
55
61
 
56
62
 
57
63
  #軸目盛設定(設定方法を2つ記載)
58
64
 
59
- axes[0].set_xticks(np.arange(0, 9, 1))
65
+ axes1.set_xticks(np.arange(0, 9, 1))
60
66
 
61
- axes[0].set_yticks(np.arange(0, 9, 1))
67
+ axes1.set_yticks(np.arange(0, 9, 1))
62
68
 
63
69
 
64
70
 
65
- axpos = axes[0].get_position()
71
+ axpos = axes1.get_position()
66
72
 
67
73
  #Color Bar作成
68
74
 
69
75
  #add_axes([x軸の開始位置, y軸の開始位置, x軸の長さ(全体に対する比率), y軸の長さ(全体に対する比率)])
70
76
 
71
- cbar_ax = fig.add_axes([0.87, axpos.y0, 0.02, axpos.height])
77
+ cbar_ax = fig.add_axes([0.5, axpos.y0, 0.02, axpos.height])
72
78
 
73
79
  cbar = fig.colorbar(im1,cax=cbar_ax)
74
80
 
75
81
  cbar.set_label("Temp")
76
82
 
83
+ #Title表示
77
84
 
78
-
85
+ axes1.set_title(title, fontsize=12)
79
-
80
86
 
81
87
 
82
88
 
@@ -90,7 +96,7 @@
90
96
 
91
97
  # 描画する。
92
98
 
93
- axes[1] = fig.add_subplot(111, projection="3d")
99
+ axes2 = fig.add_subplot(122, projection="3d")
94
100
 
95
101
 
96
102
 
@@ -98,7 +104,7 @@
98
104
 
99
105
  #s: Scale Default20
100
106
 
101
- points = axes[1].scatter(
107
+ im2 = axes2.scatter(
102
108
 
103
109
  X.flat,
104
110
 
@@ -116,55 +122,37 @@
116
122
 
117
123
  )
118
124
 
119
- axes[1].plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4)
125
+ axes2.plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4)
120
-
121
-
122
126
 
123
127
  # カラーバー追加 (xmin, ymin, w, h) でカラーバーを表示する位置を指定
124
128
 
125
129
  cbar_ax = fig.add_axes((0.9, 0.3, 0.02, 0.4))
126
130
 
127
- cbar = fig.colorbar(points, cax=cbar_ax)
131
+ cbar = fig.colorbar(im2, cax=cbar_ax)
128
132
 
129
133
  cbar.set_label("Temp")
130
134
 
131
-
132
-
133
135
  #軸ラベル設定
134
136
 
135
- axes[1].set_xlabel("X")
137
+ axes2.set_xlabel("X")
136
138
 
137
- axes[1].set_ylabel("Y")
139
+ axes2.set_ylabel("Y")
138
-
139
-
140
140
 
141
141
  #軸目盛設定
142
142
 
143
- axes[1].set_xticks(np.arange(0, 9, 1))
143
+ axes2.set_xticks(np.arange(0, 9, 1))
144
144
 
145
- axes[1].set_yticks(np.arange(0, 9, 1))
145
+ axes2.set_yticks(np.arange(0, 9, 1))
146
146
 
147
- axes[1].set_zticks(np.arange(temp_min, temp_max, 1))
147
+ axes2.set_zticks(np.arange(temp_min, temp_max, 1))
148
-
149
-
150
148
 
151
149
  #Title表示
152
150
 
153
- axes[1].set_title(title, fontsize=16)
151
+ axes2.set_title(title, fontsize=12)
154
-
155
-
156
-
157
- #余白調整
158
-
159
- plt.subplots_adjust(right=0.85)
160
-
161
- plt.subplots_adjust(wspace=0.15)
162
-
163
-
164
152
 
165
153
  # 視点
166
154
 
167
- axes[1].view_init(30, -45)
155
+ axes2.view_init(30, -45)
168
156
 
169
157
 
170
158
 
@@ -184,4 +172,20 @@
184
172
 
185
173
  プログラムを実行すると、次のような表示になってしまいます。
186
174
 
187
- ![イメージ説明](6f0b4ccefd8f19c67beedb52a7e06174.png)
175
+ 左側画像(bicubic)のカラーバーが重なってしまいます。
176
+
177
+ 右側画像と左側画像、それぞれのカラーバーの大きさを合わせたいと考えています。
178
+
179
+ ![イメージ説明](c6c41c5dcb19a54881d5673710c333c5.png)
180
+
181
+
182
+
183
+ このプログラムを実行すると、次のワーニングが表示されてしまいます。
184
+
185
+ ```text
186
+
187
+ /home/pi/.local/lib/python2.7/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
188
+
189
+ warnings.warn(message, mplDeprecation, stacklevel=1)
190
+
191
+ ```

2

質問の内容を更新しました。

2020/03/11 02:33

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -4,51 +4,177 @@
4
4
 
5
5
  Matplotlibで作成した画像を結合させたい。
6
6
 
7
+ **1つめのグラフ画像**
8
+
9
+ ![イメージ説明](43722658051ebb74156e846923ac2301.png)
10
+
11
+
12
+
13
+ **2つめのグラフ画像**
14
+
15
+ ![イメージ説明](dfdcee5cc2bc25fe0c7df8313f22d333.png)
16
+
17
+
18
+
19
+ この2つのグラフを1つの図に作成するプログラムを作っています。
20
+
7
21
 
8
22
 
9
23
  ##プログラムコード
10
24
 
11
- **1.pngと2.pngの画像が保存されていることまで確認済です。**
25
+
12
26
 
13
27
  ```python
14
28
 
15
- def drawing1():
29
+ # データ取得
16
30
 
17
- #省略
18
-
19
- global im1
31
+ sensordata = np.array(linedata)
20
-
21
- im1 = plt.savefig('/home/pi/1.png', format='png')
22
32
 
23
33
 
24
34
 
25
- def drawing2():
35
+ fig, axes = plt.subplots(figsize=(8,4),ncols=2)
26
36
 
27
- #省略
37
+ im1 = axes[1].imshow(sensordata, cmap="plasma",
28
38
 
29
- global im2
39
+ extent=[0,sensordata.shape[0],0,sensordata.shape[1]],
30
40
 
41
+ interpolation="bicubic",
42
+
43
+ aspect='auto',
44
+
31
- im2 = plt.savefig('/home/pi/2.png', format='png')
45
+ origin='lower')
32
46
 
33
47
 
34
48
 
35
- if __name__ == '__main__':
49
+ #軸ラベル設定
36
50
 
37
- try:
51
+ axes[0].set_xlabel("X")
38
52
 
39
- drawing1()
53
+ axes[0].set_ylabel("Y")
40
54
 
41
- drawing2()
42
55
 
43
- print ('Heat Mapping Generated...')
44
56
 
45
- im_h = cv2.hconcat([im1, im2])
57
+ #軸目盛設定(設定方法を2つ記載)
46
58
 
47
- cv2.imwrite('/home/pi/dev/data/thermo/bicubic_3D.png', im_h)
59
+ axes[0].set_xticks(np.arange(0, 9, 1))
48
60
 
49
- except KeyboardInterrupt:
61
+ axes[0].set_yticks(np.arange(0, 9, 1))
50
62
 
63
+
64
+
65
+ axpos = axes[0].get_position()
66
+
67
+ #Color Bar作成
68
+
69
+ #add_axes([x軸の開始位置, y軸の開始位置, x軸の長さ(全体に対する比率), y軸の長さ(全体に対する比率)])
70
+
71
+ cbar_ax = fig.add_axes([0.87, axpos.y0, 0.02, axpos.height])
72
+
73
+ cbar = fig.colorbar(im1,cax=cbar_ax)
74
+
75
+ cbar.set_label("Temp")
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ temp_min = sensordata.min()
84
+
85
+ temp_max = sensordata.max()
86
+
87
+ X, Y = np.indices(sensordata.shape)
88
+
89
+
90
+
91
+ # 描画する。
92
+
93
+ axes[1] = fig.add_subplot(111, projection="3d")
94
+
95
+
96
+
97
+ #散布図(dot)表示
98
+
99
+ #s: Scale Default20
100
+
101
+ points = axes[1].scatter(
102
+
103
+ X.flat,
104
+
105
+ Y.flat,
106
+
107
+ sensordata.flat,
108
+
109
+ c=sensordata.flat,
110
+
111
+ cmap="jet",
112
+
113
+ edgecolor="gray",
114
+
115
+ s=160,
116
+
117
+ )
118
+
119
+ axes[1].plot_surface(X, Y, sensordata, cmap="jet", alpha=0.4)
120
+
121
+
122
+
123
+ # カラーバー追加 (xmin, ymin, w, h) でカラーバーを表示する位置を指定
124
+
125
+ cbar_ax = fig.add_axes((0.9, 0.3, 0.02, 0.4))
126
+
127
+ cbar = fig.colorbar(points, cax=cbar_ax)
128
+
129
+ cbar.set_label("Temp")
130
+
131
+
132
+
133
+ #軸ラベル設定
134
+
135
+ axes[1].set_xlabel("X")
136
+
137
+ axes[1].set_ylabel("Y")
138
+
139
+
140
+
141
+ #軸目盛設定
142
+
143
+ axes[1].set_xticks(np.arange(0, 9, 1))
144
+
145
+ axes[1].set_yticks(np.arange(0, 9, 1))
146
+
147
+ axes[1].set_zticks(np.arange(temp_min, temp_max, 1))
148
+
149
+
150
+
151
+ #Title表示
152
+
153
+ axes[1].set_title(title, fontsize=16)
154
+
155
+
156
+
157
+ #余白調整
158
+
159
+ plt.subplots_adjust(right=0.85)
160
+
161
+ plt.subplots_adjust(wspace=0.15)
162
+
163
+
164
+
51
- pass
165
+ # 視点
166
+
167
+ axes[1].view_init(30, -45)
168
+
169
+
170
+
171
+ #余白調整
172
+
173
+ plt.subplots_adjust(right=0.85)
174
+
175
+ plt.subplots_adjust(wspace=0.15)
176
+
177
+ plt.savefig('/home/pi/dev/data/thermo/bicubic_3D.png', format='png')
52
178
 
53
179
  ```
54
180
 
@@ -56,18 +182,6 @@
56
182
 
57
183
  ##困っていること
58
184
 
59
- プログラムを実行すると、次のエラーメッセージが出てしまいます。
185
+ プログラムを実行すると、次のような表示になってしまいます。
60
186
 
61
- 結合する2つの画像は保存されているので、結合する画像はあるはずですが、
62
-
63
- 結合の方法が間違えているのでしょうか?
64
-
65
- ```text
66
-
67
- libpng warning: Image width is zero in IHDR
68
-
69
- libpng warning: Image height is zero in IHDR
187
+ ![イメージ説明](6f0b4ccefd8f19c67beedb52a7e06174.png)
70
-
71
- libpng error: Invalid IHDR data
72
-
73
- ```

1

プログラムコード修正

2020/03/11 01:32

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  drawing1()
40
40
 
41
- drawing1()
41
+ drawing2()
42
42
 
43
43
  print ('Heat Mapping Generated...')
44
44