回答編集履歴

6

d

2018/12/23 17:04

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -26,9 +26,9 @@
26
26
 
27
27
 
28
28
 
29
- orient = np.random.randint(0, 360, 100000)
29
+ #orient = np.random.randint(0, 360, 100000)
30
30
 
31
- speed = np.random.randint(0, 900, 100000)
31
+ #speed = np.random.randint(0, 900, 100000)
32
32
 
33
33
 
34
34
 

5

d

2018/12/23 17:04

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -74,4 +74,94 @@
74
74
 
75
75
  numpy.histogram2d() の返り値 H の内容は以下の画像を見るとわかるかと思います。各要素は該当する個数を表しています。
76
76
 
77
+
78
+
77
79
  ![イメージ説明](d71c9a722a82895e8ac9ecec0b7d3b37.png)
80
+
81
+
82
+
83
+ ## 追記
84
+
85
+
86
+
87
+ (元の角度 + 11.25) mod 360 としてから、ヒストグラムを作成すればよいです。mod をとるのは 元の角度が 350 の場合、350 + 11.25 = 361.25 となるので、361.25 mod 360 = 1.25 とするためです。
88
+
89
+
90
+
91
+ ```
92
+
93
+ ['-11.25 ~ 11.25',
94
+
95
+ '11.25 ~ 33.75',
96
+
97
+ '33.75 ~ 56.25',
98
+
99
+ '56.25 ~ 78.75',
100
+
101
+ '78.75 ~ 101.25',
102
+
103
+ '101.25 ~ 123.75',
104
+
105
+ '123.75 ~ 146.25',
106
+
107
+ '146.25 ~ 168.75',
108
+
109
+ '168.75 ~ 191.25',
110
+
111
+ '191.25 ~ 213.75',
112
+
113
+ '213.75 ~ 236.25',
114
+
115
+ '236.25 ~ 258.75',
116
+
117
+ '258.75 ~ 281.25',
118
+
119
+ '281.25 ~ 303.75',
120
+
121
+ '303.75 ~ 326.25',
122
+
123
+ '326.25 ~ 348.75']
124
+
125
+ ```
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+ ```
134
+
135
+ ['0.0 ~ 22.5',
136
+
137
+ '22.5 ~ 45.0',
138
+
139
+ '45.0 ~ 67.5',
140
+
141
+ '67.5 ~ 90.0',
142
+
143
+ '90.0 ~ 112.5',
144
+
145
+ '112.5 ~ 135.0',
146
+
147
+ '135.0 ~ 157.5',
148
+
149
+ '157.5 ~ 180.0',
150
+
151
+ '180.0 ~ 202.5',
152
+
153
+ '202.5 ~ 225.0',
154
+
155
+ '225.0 ~ 247.5',
156
+
157
+ '247.5 ~ 270.0',
158
+
159
+ '270.0 ~ 292.5',
160
+
161
+ '292.5 ~ 315.0',
162
+
163
+ '315.0 ~ 337.5',
164
+
165
+ '337.5 ~ 360.0']
166
+
167
+ ```

4

d

2018/12/23 17:00

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -14,17 +14,21 @@
14
14
 
15
15
  ```python
16
16
 
17
+ import matplotlib.pyplot as plt
18
+
17
19
  import numpy as np
18
20
 
19
- import matplotlib.pyplot as plt
21
+ import seaborn as sns # pip install seaborn
20
22
 
21
23
 
22
24
 
23
- data = np.loadtxt('test.csv', delimiter=',')
25
+ orient, speed = np.loadtxt('test.csv', delimiter=',').T
24
26
 
25
- # data = np.c_[np.random.randint(0, 360, 100000),
26
27
 
28
+
29
+ orient = np.random.randint(0, 360, 100000)
30
+
27
- # np.random.randint(0, 900, 100000)]
31
+ speed = np.random.randint(0, 900, 100000)
28
32
 
29
33
 
30
34
 
@@ -32,7 +36,7 @@
32
36
 
33
37
  y_edges = np.linspace(0, 360, 17)
34
38
 
35
- H = np.histogram2d(data[:, 0], data[:, 1],
39
+ H = np.histogram2d(np.mod(orient + 11.25, 360), speed,
36
40
 
37
41
  bins=(y_edges, x_edges))[0].astype(int)
38
42
 
@@ -40,15 +44,21 @@
40
44
 
41
45
 
42
46
 
43
- import seaborn as sns # pip install seaborn
44
-
45
47
  sns.set()
46
48
 
47
49
  # 目盛りのラベルを設定する。
48
50
 
49
- xlabels = ['{} ~ {}'.format(start, end) for start, end in zip(x_edges, x_edges[1:])]
51
+ xlabels = ['{} ~ {}'.format(start, end)
50
52
 
51
- ylabels = ['{} ~ {}'.format(start, end) for start, end in zip(y_edges, y_edges[1:])]
53
+ for start, end in zip(x_edges, x_edges[1:])]
54
+
55
+ ylabels = ['N', 'NNW', 'NW', 'WNW',
56
+
57
+ 'W', 'WSW', 'SW', 'SSW',
58
+
59
+ 'S', 'SSE', 'SE', 'ESE',
60
+
61
+ 'E', 'ENE', 'NE', 'NNE']
52
62
 
53
63
  # ヒートマップを作成する。
54
64
 
@@ -64,6 +74,4 @@
64
74
 
65
75
  numpy.histogram2d() の返り値 H の内容は以下の画像を見るとわかるかと思います。各要素は該当する個数を表しています。
66
76
 
67
-
68
-
69
- ![イメージ説明](f67614c78801e7d89e7f30822cd1a79a.png)
77
+ ![イメージ説明](d71c9a722a82895e8ac9ecec0b7d3b37.png)

3

c

2018/12/23 16:53

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -62,36 +62,8 @@
62
62
 
63
63
 
64
64
 
65
- 可視化する。
66
-
67
65
  numpy.histogram2d() の返り値 H の内容は以下の画像を見るとわかるかと思います。各要素は該当する個数を表しています。
68
66
 
69
67
 
70
68
 
71
-
72
-
73
- ```python
74
-
75
- import seaborn as sns # pip install seaborn
76
-
77
- sns.set()
78
-
79
- # 目盛りのラベルを設定する。
80
-
81
- xlabels = ['{} ~ {}'.format(start, end) for start, end in zip(velocity_edges, velocity_edges[1:])]
82
-
83
- ylabels = ['{} ~ {}'.format(start, end) for start, end in zip(orient_edges, orient_edges[1:])]
84
-
85
- # ヒートマップを作成する。
86
-
87
- sns.heatmap(H, annot=True, cmap='Reds', square=True,
88
-
89
- xticklabels=xlabels, yticklabels=ylabels)
90
-
91
- plt.show()
92
-
93
- ```
94
-
95
-
96
-
97
69
  ![イメージ説明](f67614c78801e7d89e7f30822cd1a79a.png)

2

d

2018/12/23 15:41

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -22,17 +22,41 @@
22
22
 
23
23
  data = np.loadtxt('test.csv', delimiter=',')
24
24
 
25
+ # data = np.c_[np.random.randint(0, 360, 100000),
26
+
27
+ # np.random.randint(0, 900, 100000)]
25
28
 
26
29
 
27
- orient_edges = np.linspace(0, 360, 17)
28
30
 
29
- velocity_edges = np.arange(0, 901, 100)
31
+ x_edges = np.arange(0, 901, 100)
30
32
 
31
- H, _, _ = np.histogram2d(
33
+ y_edges = np.linspace(0, 360, 17)
32
34
 
35
+ H = np.histogram2d(data[:, 0], data[:, 1],
36
+
33
- data[:, 0], data[:, 1], bins=(orient_edges, velocity_edges))
37
+ bins=(y_edges, x_edges))[0].astype(int)
34
38
 
35
39
  print(H.shape) # (16, 9)
40
+
41
+
42
+
43
+ import seaborn as sns # pip install seaborn
44
+
45
+ sns.set()
46
+
47
+ # 目盛りのラベルを設定する。
48
+
49
+ xlabels = ['{} ~ {}'.format(start, end) for start, end in zip(x_edges, x_edges[1:])]
50
+
51
+ ylabels = ['{} ~ {}'.format(start, end) for start, end in zip(y_edges, y_edges[1:])]
52
+
53
+ # ヒートマップを作成する。
54
+
55
+ sns.heatmap(H, annot=True, cmap='Reds', fmt='d',
56
+
57
+ xticklabels=xlabels, yticklabels=ylabels, cbar=False)
58
+
59
+ plt.show()
36
60
 
37
61
  ```
38
62
 
@@ -70,4 +94,4 @@
70
94
 
71
95
 
72
96
 
73
- ![イメージ説明](b75e61ea6adac2305988cc721db28253.png)
97
+ ![イメージ説明](f67614c78801e7d89e7f30822cd1a79a.png)

1

d

2018/12/23 15:41

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- 1, 2 でやろうとしていることは、データを風0 ~ 360で16分割し、さらに0~900で9分割する2次元ヒストグラムの作成と考えることができます。
7
+ 1, 2 でやろうとしていることは、データを風0 ~ 360で16分割し、さらに風速0~900で9分割する2次元ヒストグラムの作成と考えることができます。
8
8
 
9
9
 
10
10