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

質問編集履歴

1

内容を改善しました

2020/09/01 01:56

投稿

astromelt0416
astromelt0416

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,50 +1,36 @@
1
1
  ### 前提
2
2
 
3
3
  以下のような三次元のデータセット(座標x,座標y,座標z,値w)があります。
4
+ (2020/09/01:データセットをテスト用に変更しました。)
4
5
 
5
- ```test
6
+ ```test2
6
- 21.000000000000000 20.784609690826528 21.000000000000000 0.36762773602405902
7
- 22.000000000000000 20.784609690826528 21.000000000000000 -0.76503366997639299
7
+ 1.0000000000000000 1.0000000000000000 1.0000000000000000 -0.13158839827673241
8
+ 2.0000000000000000 1.0000000000000000 1.0000000000000000 0.71925334812124575
9
+ 3.0000000000000000 1.0000000000000000 1.0000000000000000 0.78471142747083489
8
- 23.000000000000000 20.784609690826528 21.000000000000000 -0.99932965921787298
10
+ 1.0000000000000000 2.0000000000000000 1.0000000000000000 0.80090268277584165
9
- 20.500000000000000 21.650635094610966 21.000000000000000 0.50959339073286702
11
+ 2.0000000000000000 2.0000000000000000 1.0000000000000000 0.47791159839320740
10
- 21.500000000000000 21.650635094610966 21.000000000000000 0.53289055562116305
12
+ 3.0000000000000000 2.0000000000000000 1.0000000000000000 -0.66020035502971153
13
+ 1.0000000000000000 3.0000000000000000 1.0000000000000000 0.59567696265775649
14
+ 2.0000000000000000 3.0000000000000000 1.0000000000000000 0.63414183529888790
15
+ 3.0000000000000000 3.0000000000000000 1.0000000000000000 -0.76203127712058638
16
+ 1.0000000000000000 1.0000000000000000 2.0000000000000000 -0.86357330388007059
17
+ 2.0000000000000000 1.0000000000000000 2.0000000000000000 -0.77094770683230540
18
+ 3.0000000000000000 1.0000000000000000 2.0000000000000000 -0.38407329315880157
19
+ 1.0000000000000000 2.0000000000000000 2.0000000000000000 -0.77643663058440127
11
- 22.500000000000000 21.650635094610966 21.000000000000000 0.51387287644585100
20
+ 2.0000000000000000 2.0000000000000000 2.0000000000000000 0.29485883547339098
21
+ 3.0000000000000000 2.0000000000000000 2.0000000000000000 -0.90345817476125856
22
+ 1.0000000000000000 3.0000000000000000 2.0000000000000000 0.11249311806459295
23
+ 2.0000000000000000 3.0000000000000000 2.0000000000000000 -0.69983754858836478
24
+ 3.0000000000000000 3.0000000000000000 2.0000000000000000 -0.41968109538305576
25
+ 1.0000000000000000 1.0000000000000000 3.0000000000000000 -0.67405952831591942
26
+ 2.0000000000000000 1.0000000000000000 3.0000000000000000 0.17664524847097818
27
+ 3.0000000000000000 1.0000000000000000 3.0000000000000000 0.40055391690706688
28
+ 1.0000000000000000 2.0000000000000000 3.0000000000000000 0.54128168000403831
12
- 23.500000000000000 21.650635094610966 21.000000000000000 0.93938575587905504
29
+ 2.0000000000000000 2.0000000000000000 3.0000000000000000 0.13337159555716704
13
- 21.000000000000000 22.516660498395403 21.000000000000000 0.74912909531051797
14
- 22.000000000000000 22.516660498395403 21.000000000000000 0.96393826365543300
15
- 23.000000000000000 22.516660498395403 21.000000000000000 0.82253648870482299
16
- 20.500000000000000 23.382685902179841 21.000000000000000 0.96750099459057604
17
- 21.500000000000000 23.382685902179841 21.000000000000000 0.54171633834693500
18
- 22.500000000000000 23.382685902179841 21.000000000000000 -0.49411724598099399
19
- 23.500000000000000 23.382685902179841 21.000000000000000 0.71008294427895202
20
- 21.000000000000000 20.784609690826528 22.000000000000000 0.47089478204533203
21
- 22.000000000000000 20.784609690826528 22.000000000000000 -0.48966440290941199
22
- 23.000000000000000 20.784609690826528 22.000000000000000 -0.75110417874224800
30
+ 3.0000000000000000 2.0000000000000000 3.0000000000000000 0.61191841485256293
23
- 20.500000000000000 21.650635094610966 22.000000000000000 -0.29231934984993402
24
- 21.500000000000000 21.650635094610966 22.000000000000000 0.52244778023291805
31
+ 1.0000000000000000 3.0000000000000000 3.0000000000000000 0.19400358833232989
25
- 22.500000000000000 21.650635094610966 22.000000000000000 0.33588612156110798
26
- 23.500000000000000 21.650635094610966 22.000000000000000 0.57297344967052499
27
- 21.000000000000000 22.516660498395403 22.000000000000000 0.76011108493218804
28
- 22.000000000000000 22.516660498395403 22.000000000000000 0.95215768341148899
29
- 23.000000000000000 22.516660498395403 22.000000000000000 0.45565677027778401
30
- 20.500000000000000 23.382685902179841 22.000000000000000 0.83501909968891797
31
- 21.500000000000000 23.382685902179841 22.000000000000000 0.14404150412601699
32
- 22.500000000000000 23.382685902179841 22.000000000000000 -0.69902529737479502
33
- 23.500000000000000 23.382685902179841 22.000000000000000 -0.28290903761085900
34
- 21.000000000000000 20.784609690826528 23.000000000000000 0.63038968590583500
35
- 22.000000000000000 20.784609690826528 23.000000000000000 0.15788958679633100
36
- 23.000000000000000 20.784609690826528 23.000000000000000 -0.85471062141201803
37
- 20.500000000000000 21.650635094610966 23.000000000000000 0.14517695464640701
38
- 21.500000000000000 21.650635094610966 23.000000000000000 0.92571997753805202
32
+ 2.0000000000000000 3.0000000000000000 3.0000000000000000 -0.32331996535028329
39
- 22.500000000000000 21.650635094610966 23.000000000000000 0.48034013680882298
40
- 23.500000000000000 21.650635094610966 23.000000000000000 0.98448456343896795
33
+ 3.0000000000000000 3.0000000000000000 3.0000000000000000 -0.29791180540293261
41
- 21.000000000000000 22.516660498395403 23.000000000000000 5.3707461383729387E-002
42
- 22.000000000000000 22.516660498395403 23.000000000000000 0.69006836749195000
43
- 23.000000000000000 22.516660498395403 23.000000000000000 0.78132223797143197
44
- 20.500000000000000 23.382685902179841 23.000000000000000 0.80988507635854401
45
- 21.500000000000000 23.382685902179841 23.000000000000000 0.70556890542225403
46
- 22.500000000000000 23.382685902179841 23.000000000000000 -5.6205713949508129E-002
47
- 23.500000000000000 23.382685902179841 23.000000000000000 -0.49712719738417699
48
34
  ```
49
35
 
50
36
  このデータを三次元プロットを行うことを考えます。プロット自体はscatter()を用いて以下のように行うことができました。コードは以前に質問させていただいた([matplotlib:三次元ベクトル場に着色をしたい](https://teratail.com/questions/288509))を参考にしています。
@@ -69,7 +55,7 @@
69
55
  z = []
70
56
  w = []
71
57
 
72
- f = open('test.d')
58
+ f = open('test2.d')
73
59
  for line in f:
74
60
  data = line.split()
75
61
  x.append(float(data[0]))
@@ -87,9 +73,8 @@
87
73
  ```
88
74
 
89
75
  結果は以下のようになります。
90
- ![イメージ説明](0f21d742f5ea821001f7d6b9ab9ac9b1.png)
76
+ ![イメージ説明](558cb2b6b4bcf2bfc3ff096da5f4b106.png)
91
77
 
92
-
93
78
  ###実現したいこと
94
79
  xyz空間中にある各点の値どうしを補間してプロットを行いたいと考えています。
95
80
  このとき補間はなるべく細かく行い、できるだけ連続した面に見えるように行いたいです。
@@ -97,4 +82,11 @@
97
82
  ###調べたこと
98
83
  二次元系に対しては[Python : 2d contour plot from 3 lists : x, y and rho?](https://stackoverrun.com/ja/q/2346376)などのようにscipy.interpolateを行えばできそうです。これと同じようなことを今回のような3次元の系に対しても行いたいです。
99
84
 
100
- 詳しい方がいらっしゃればよろしくお願いします
85
+ 詳しい方がいらっしゃればよろしくお願いします
86
+
87
+ ###追記
88
+ 具体的には以下のようなイメージです。
89
+ 写真のように、補間を各面上にある点に対して行う(下の画像中の黒の点を追加する、実際の色は値wで補間しているためグラデーションになるはずです。)ことで、連続な一つの面に見ることができます。
90
+ これと同じ操作を他の5面に対しても行うことで、外側から見た分には値wで連続した面が見えるようになるかと思います。今回は内部の点に関しては補間を適用していただかなくて大丈夫です。
91
+
92
+ ![イメージ説明](e12154b9f8afe89f8f7017e53f30f115.png)