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

Q&A

解決済

1回答

2356閲覧

python 可視化 座標と物理量を結び付けたい

Tubasa1995

総合スコア83

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/21 12:10

編集2018/12/22 06:37

0

0

イメージ説明

前提・実現したいこと

今,pythonで書きのコードを作って,フィルターをかけた出力を得るようなコードを作りました.これは無事に成功しました.
そして次にこれらをvtkファイルとして出力して可視化をしたいと思います.
ただ,問題なのは,出力はfilteroutput.csvというように(本来の出力はもっと縦に長いですが)測定点ごとに順番に並んでます.
しかし,これらの測定点には座標があたえられていません.
それらの点の座標はすでにわかっているのですが,可視化するときに
filteroutput.csvの一つ目の-1.113303503148000306e+00には(x,y,z)=(-0.05,0.05,0.3)
二つ目に-7.423284898519999508e-01には(x,y,z)=(-0.05,0.048,0.3)というように結び付けて可視化をするにはどうすれば良いでしょうか.

vtkと言いましたが,pythonでもっと便利な何かがあればそれで可視化できたらそれでもいいです.
ただ,今回はx座標が全て同じですので2Dの図でもかまいません.

どうかご教授お願いします.

filteroutput.csvを出力するためのコード

Python3

1import numpy as np 2from scipy import signal 3 4data = np.loadtxt("reshape_min.csv",delimiter=",", skiprows=0, dtype='float') 5print(data) 6 7filtering = np.array([ 8[0.111,0.111,0.111], 9[0.111,0.112,0.111], 10[0.111,0.111,0.111] 11]) 12 13print(filtering) 14convolution = signal.convolve2d(data, filtering, 'valid') 15print(convolution) 16 17np.savetxt('filtering_min.csv', convolution, delimiter=',') 18 19

##filteroutput.csv(Notepadで開いたもの)

-1.113303503148000306e+00,-7.423284898519999508e-01,-6.546866565560001128e-01,-6.565390198520000276e-01,-6.543533532220000559e-01,-7.872470198890000326e-01,-7.561897932960000013e-01,-7.617021899629999870e-01,-7.248841665559999647e-01,-7.139656532220000074e-01,-6.844888631850000182e-01,-6.306578132960001248e-01,-6.593895067039999836e-01,-6.942903567779999952e-01,-6.796606668149999253e-01,-6.705761633329999638e-01,-6.449768233329999934e-01,-7.362626066669999414e-01,-7.802652199999999816e-01,-7.916355900000000556e-01,-7.000143399630001095e-01,-6.423799333699999892e-01,-6.473608466670000006e-01,-6.609258033329999948e-01,-7.292889799260000583e-01,-7.030877732960000293e-01,-7.493162366300000210e-01,-7.509412301110000021e-01,-8.395839567039999896e-01,-8.265878234070000996e-01,-8.351326367779999815e-01,-8.394431767409999967e-01,-7.955383600369999586e-01,-7.267135865930001160e-01,-6.497176199629999260e-01,-6.442214632960000520e-01,-6.541611299259999512e-01,-6.296200933699999114e-01,-6.121647099629999866e-01,-5.915747132590000179e-01,-6.964571932590000181e-01,-7.201453467039998779e-01,-8.116633501479999513e-01,-7.387557867410000645e-01,-7.357866568149999953e-01,-6.926971267039999658e-01,-6.960206234440000639e-01,-8.792141065560000746e-01,-1.236609143259000065e+00 -8.346959198519999790e-01,-4.026660599259999640e-01,-3.294746033329999935e-01,-3.093277632959999801e-01,-3.019079699260000527e-01,-3.159905998520000092e-01,-3.040177332590000003e-01,-2.978626500000000066e-01,-2.850613100000000122e-01,-2.849145932959999405e-01,-2.833672098150000207e-01,-2.822791331849999752e-01,-2.931608232960000171e-01,-2.950280967040000424e-01,-2.957959734439999933e-01,-2.851699765929999741e-01,-2.872591773330000486e-01,-2.915647650370000177e-01,-2.884757087779999951e-01,-2.813586394440000249e-01,-2.765627576299999890e-01,-2.744007270000000109e-01,-2.896381859630000055e-01,-2.921002810000000172e-01,-2.964873478889999969e-01,-2.853117609260000243e-01,-2.843263999260000063e-01,-2.833847399999999683e-01,-2.837874398520000008e-01,-2.792082931849999561e-01,-2.777147632220000051e-01,-2.756152266299999876e-01,-2.757232633699999713e-01,-2.749815199630000206e-01,-2.749534699630000190e-01,-2.721902365559999981e-01,-2.733966731850000498e-01,-2.764470498890000405e-01,-2.761094965560000336e-01,-2.728140179260000187e-01,-2.758958412959999773e-01,-2.888964846670000197e-01,-2.987460267039999673e-01,-3.017872599629999875e-01,-2.979753434069999929e-01,-3.108824867039999829e-01,-3.348769734809999843e-01,-4.385864099999999821e-01,-9.330728234070001514e-01

##座標(Notepadで開いたもの)

測定点番号 x座標 y座標 z座標 1 -0.05 0.05 0.3 2 -0.05 0.048 0.3 3 -0.05 0.046 0.3 4 -0.05 0.044 0.3 5 -0.05 0.042 0.3 6 -0.05 0.04 0.3 7 -0.05 0.038 0.3 8 -0.05 0.036 0.3 9 -0.05 0.034 0.3 10 -0.05 0.032 0.3 11 -0.05 0.03 0.3 12 -0.05 0.028 0.3 13 -0.05 0.026 0.3 14 -0.05 0.024 0.3 15 -0.05 0.022 0.3 16 -0.05 0.02 0.3 17 -0.05 0.018 0.3 18 -0.05 0.016 0.3 19 -0.05 0.014 0.3 20 -0.05 0.012 0.3 21 -0.05 0.01 0.3 22 -0.05 0.008 0.3 23 -0.05 0.006 0.3 24 -0.05 0.004 0.3 25 -0.05 0.002 0.3 26 -0.05 0 0.3 27 -0.05 -0.002 0.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答1

0

ベストアンサー

matplotlibの三次元散布図が簡単でよいかと思います。

Python

1from matplotlib import pyplot as plt 2import numpy as np 3from mpl_toolkits.mplot3d.axes3d import Axes3D 4 5# 座標と物理量の読込 6points = np.loadtxt('point.txt',skiprows=1) 7values = np.loadtxt('fileoutput.csv',delimiter=',').flatten() # 1次元化 8 9# 三次元散布図。各点の色に物理量を指定する 10x = points[:,1] 11y = points[:,2] 12z = points[:,3] 13c = values[:27] # 座標の数に合わせる 14 15fig = plt.figure() 16ax = Axes3D(fig) 17p = ax.scatter(x, y, z, c=c, s=10, cmap='Blues') 18 19plt.colorbar(p) 20plt.show()

イメージ説明

投稿2018/12/21 22:00

can110

総合スコア38350

Tubasa1995

2018/12/22 06:21

解答ありがとうございます. ただ,今探しているものは散布図ではなくて, その散布図の点と点の間を補間で線を引きたいのですが無理ですか?
Tubasa1995

2018/12/22 06:22

つまり,4つの点で四角い領域を作ったときに,その面を色づけすることはできませんか?
can110

2018/12/22 06:28 編集

すみません。可視化したいもののイメージができません。 質問本文にイメージ図の例とその説明を追記ください。 また、座標群が球状星団のように分布していた場合は領域(曲面)は作成できないと思うのですが、その場合はどのような可視化イメージになるべきなのかも追記ください。
Tubasa1995

2018/12/22 06:30

更新しました,例えば上のような図です.
Tubasa1995

2018/12/22 06:30

ただ,今回の場合は3Dというよりも,x座標が全て同じなので,2Dのグラフでもかまいません.
can110

2018/12/22 06:34

「今回の場合は3Dというよりも,x座標が全て同じなので」 このような仕様は、実現の難易度にかかわる重要な制約条件ですので(できれば最初から)質問本文に明記ください。
Tubasa1995

2018/12/22 06:37

ご指摘ありがとうございます.直しました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問