回答編集履歴

3

画像とコード追加

2020/06/19 09:21

投稿

Penpen7
Penpen7

スコア698

test CHANGED
@@ -25,3 +25,81 @@
25
25
  下の例が一番使えるかもしれません。
26
26
 
27
27
  https://books.google.co.jp/books?id=SsFqDwAAQBAJ&pg=PA231&lpg=PA231&dq=read+csv+plot_surface&source=bl&ots=rdidw7dcpG&sig=ACfU3U0i_4oXLiy32Q0FBje9alYzEoo6Fw&hl=ja&sa=X&ved=2ahUKEwjyra6AvY3qAhWMHKYKHdvhAfc4ChDoATAAegQIChAB#v=onepage&q=read%20csv%20plot_surface&f=false
28
+
29
+
30
+
31
+ # コード例
32
+
33
+ 上のgoogle bookを参考に書いたものです。
34
+
35
+ ```python
36
+
37
+ import numpy as np
38
+
39
+ import scipy.interpolate as interp
40
+
41
+ import pandas as pd
42
+
43
+ import matplotlib.pyplot as plt
44
+
45
+ from mpl_toolkits.mplot3d import Axes3D
46
+
47
+
48
+
49
+ # read the input data (ignore the first row)
50
+
51
+ data = pd.read_csv('hoge.csv', dtype='double').values[:,0:3]
52
+
53
+
54
+
55
+ # construct meshgrid
56
+
57
+ gridsize = 100
58
+
59
+ mn, mx = data.min(axis=0), data.max(axis=0)
60
+
61
+ xm = np.arange(mn[0],mx[0],(mx[0]-mn[0])/(gridsize-1))
62
+
63
+ ym = np.arange(mn[1],mx[1],(mx[1]-mn[1])/(gridsize-1))
64
+
65
+ x, y = np.meshgrid(xm, ym)
66
+
67
+
68
+
69
+ # interpolate the data
70
+
71
+ z = interp.griddata(data[:,0:2], data[:,2], (x,y), method='cubic')
72
+
73
+ z[np.isnan(z)] = np.nanmean(z)
74
+
75
+
76
+
77
+ ax = plt.gca(projection='3d')
78
+
79
+ ax.plot_surface(x,y,z,cmap='autumn',linewidth=0)
80
+
81
+ plt.savefig('hoge.png')
82
+
83
+ ```
84
+
85
+ テストのため、以下のスクリプトでデータを作成しました。ガウシアンです。
86
+
87
+ ```python
88
+
89
+ import numpy as np
90
+
91
+ with open('hoge.csv', mode='w') as f:
92
+
93
+ for i in np.linspace(-3,3,100):
94
+
95
+ for j in np.linspace(-3,3,100):
96
+
97
+ f.write("{0:f}, {1:f}, {2:f}".format(i,j,np.exp(-i*i-j*j)))
98
+
99
+ f.write("\n")
100
+
101
+
102
+
103
+ ```
104
+
105
+ ![ガウシアンをプロット](7c6ae79565b83cb618597ca176e27573.png)

2

markdownを使用

2020/06/19 09:21

投稿

Penpen7
Penpen7

スコア698

test CHANGED
@@ -1,4 +1,4 @@
1
- matplotlibのAxes3Dを使いましょう。
1
+ # matplotlibのAxes3D(plot_wireframe or plot_surface)を使いましょう。
2
2
 
3
3
  plot_wireframeかplot_surfaceを使えばいいです。
4
4
 
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- ファイルから描画する
11
+ # ファイルから描画するにはnumpyやpandasを使う
12
12
 
13
13
  numpyやpandasを使ってファイルを読み込みましょう。
14
14
 
@@ -16,10 +16,12 @@
16
16
 
17
17
  データ読み込み→x,y,z軸のデータを用意(場合によっては整形する)→x,yをmeshgridでメッシュを作成→plot_surfaceなどでプロット→保存
18
18
 
19
- という流れになります。
19
+ というのが大きな流れになります。
20
20
 
21
21
  python 3d surface csvで検索するといくつかヒットします。
22
22
 
23
23
 
24
24
 
25
+ 下の例が一番使えるかもしれません。
26
+
25
27
  https://books.google.co.jp/books?id=SsFqDwAAQBAJ&pg=PA231&lpg=PA231&dq=read+csv+plot_surface&source=bl&ots=rdidw7dcpG&sig=ACfU3U0i_4oXLiy32Q0FBje9alYzEoo6Fw&hl=ja&sa=X&ved=2ahUKEwjyra6AvY3qAhWMHKYKHdvhAfc4ChDoATAAegQIChAB#v=onepage&q=read%20csv%20plot_surface&f=false

1

ファイルを使用する例

2020/06/19 08:48

投稿

Penpen7
Penpen7

スコア698

test CHANGED
@@ -5,3 +5,21 @@
5
5
  以下に詳細があります。
6
6
 
7
7
  https://watlab-blog.com/2019/12/01/matplotlib-3dplot/#Pythonmatplotlib3D
8
+
9
+
10
+
11
+ ファイルから描画する例
12
+
13
+ numpyやpandasを使ってファイルを読み込みましょう。
14
+
15
+ matplotlibにデータを渡すには整形したり補間する必要があるかもしれません。
16
+
17
+ データ読み込み→x,y,z軸のデータを用意(場合によっては整形する)→x,yをmeshgridでメッシュを作成→plot_surfaceなどでプロット→保存
18
+
19
+ という流れになります。
20
+
21
+ python 3d surface csvで検索するといくつかヒットします。
22
+
23
+
24
+
25
+ https://books.google.co.jp/books?id=SsFqDwAAQBAJ&pg=PA231&lpg=PA231&dq=read+csv+plot_surface&source=bl&ots=rdidw7dcpG&sig=ACfU3U0i_4oXLiy32Q0FBje9alYzEoo6Fw&hl=ja&sa=X&ved=2ahUKEwjyra6AvY3qAhWMHKYKHdvhAfc4ChDoATAAegQIChAB#v=onepage&q=read%20csv%20plot_surface&f=false