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

回答編集履歴

3

画像とコード追加

2020/06/19 09:21

投稿

Penpen7
Penpen7

スコア698

answer CHANGED
@@ -11,4 +11,43 @@
11
11
  python 3d surface csvで検索するといくつかヒットします。
12
12
 
13
13
  下の例が一番使えるかもしれません。
14
- 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
14
+ 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
15
+
16
+ # コード例
17
+ 上のgoogle bookを参考に書いたものです。
18
+ ```python
19
+ import numpy as np
20
+ import scipy.interpolate as interp
21
+ import pandas as pd
22
+ import matplotlib.pyplot as plt
23
+ from mpl_toolkits.mplot3d import Axes3D
24
+
25
+ # read the input data (ignore the first row)
26
+ data = pd.read_csv('hoge.csv', dtype='double').values[:,0:3]
27
+
28
+ # construct meshgrid
29
+ gridsize = 100
30
+ mn, mx = data.min(axis=0), data.max(axis=0)
31
+ xm = np.arange(mn[0],mx[0],(mx[0]-mn[0])/(gridsize-1))
32
+ ym = np.arange(mn[1],mx[1],(mx[1]-mn[1])/(gridsize-1))
33
+ x, y = np.meshgrid(xm, ym)
34
+
35
+ # interpolate the data
36
+ z = interp.griddata(data[:,0:2], data[:,2], (x,y), method='cubic')
37
+ z[np.isnan(z)] = np.nanmean(z)
38
+
39
+ ax = plt.gca(projection='3d')
40
+ ax.plot_surface(x,y,z,cmap='autumn',linewidth=0)
41
+ plt.savefig('hoge.png')
42
+ ```
43
+ テストのため、以下のスクリプトでデータを作成しました。ガウシアンです。
44
+ ```python
45
+ import numpy as np
46
+ with open('hoge.csv', mode='w') as f:
47
+ for i in np.linspace(-3,3,100):
48
+ for j in np.linspace(-3,3,100):
49
+ f.write("{0:f}, {1:f}, {2:f}".format(i,j,np.exp(-i*i-j*j)))
50
+ f.write("\n")
51
+
52
+ ```
53
+ ![ガウシアンをプロット](7c6ae79565b83cb618597ca176e27573.png)

2

markdownを使用

2020/06/19 09:21

投稿

Penpen7
Penpen7

スコア698

answer CHANGED
@@ -1,13 +1,14 @@
1
- matplotlibのAxes3Dを使いましょう。
1
+ # matplotlibのAxes3D(plot_wireframe or plot_surface)を使いましょう。
2
2
  plot_wireframeかplot_surfaceを使えばいいです。
3
3
  以下に詳細があります。
4
4
  https://watlab-blog.com/2019/12/01/matplotlib-3dplot/#Pythonmatplotlib3D
5
5
 
6
- ファイルから描画する
6
+ # ファイルから描画するにはnumpyやpandasを使う
7
7
  numpyやpandasを使ってファイルを読み込みましょう。
8
8
  matplotlibにデータを渡すには整形したり補間する必要があるかもしれません。
9
9
  データ読み込み→x,y,z軸のデータを用意(場合によっては整形する)→x,yをmeshgridでメッシュを作成→plot_surfaceなどでプロット→保存
10
- という流れになります。
10
+ というのが大きな流れになります。
11
11
  python 3d surface csvで検索するといくつかヒットします。
12
12
 
13
+ 下の例が一番使えるかもしれません。
13
14
  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

answer CHANGED
@@ -1,4 +1,13 @@
1
1
  matplotlibのAxes3Dを使いましょう。
2
2
  plot_wireframeかplot_surfaceを使えばいいです。
3
3
  以下に詳細があります。
4
- https://watlab-blog.com/2019/12/01/matplotlib-3dplot/#Pythonmatplotlib3D
4
+ https://watlab-blog.com/2019/12/01/matplotlib-3dplot/#Pythonmatplotlib3D
5
+
6
+ ファイルから描画する例
7
+ numpyやpandasを使ってファイルを読み込みましょう。
8
+ matplotlibにデータを渡すには整形したり補間する必要があるかもしれません。
9
+ データ読み込み→x,y,z軸のデータを用意(場合によっては整形する)→x,yをmeshgridでメッシュを作成→plot_surfaceなどでプロット→保存
10
+ という流れになります。
11
+ python 3d surface csvで検索するといくつかヒットします。
12
+
13
+ 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