2016-03-23 37 views
2

プロットしたい3列の.datファイルがあります。 matplotlib/pythonを使ってそれらをプロットする方法はありますか?私のpythonに新しいです、.datファイルがFortranの90 filename.datをファイルの一部を使用して作成された3Dでデータをプロット(正しくない).datファイルから3列をプロットする

0.0 0.1 0.85 
1.0 0.3 0.62 
2.0 0.5 0.27 
3.0 0.7 0.34 
4.0 0.9 0.19 

私のPythonコードは、以下の以下です。

import numpy as np 
import matplotlib.pyplot as plot 
from mpl_toolkits.mplot3d import Axes3D 

3Dplot.plot(*np.loadtxt("filename.dat",unpack=True), linewidth=2.0) #invalid syntax, why? 
3Dplot.show() 

gnuplotのコマンドのpythonで

splot 'filename.dat' using 1:2:3 

と同等とは何ですか?それが私がやろうとしていることです。

しかし、私が.pyを実行すると、「無効な構文」というエラーメッセージが表示されますが、なぜそれはわかりませんが、3Dで始まる行です。 3Dデータをプロットする方法は? 2つの列しかない.datファイルがある場合はこれを行うことができますが、3次元に行くときには何をすべきか分かりません。ありがとう!

+0

エラーは何ですか? – efirvida

+0

@efirvidaは質問してから投稿に追加しましたが、エラーは "無効な構文"です。ありがとう。 –

+2

@Integrals:識別子(「3Dplot」など)が[数字で始めることができない](https://docs.python.org/2/reference/lexical_analysis.html#identifiers)ため、SyntaxErrorの理由があります。 – unutbu

答えて

4

Axes3Dオブジェクトを誤って使用しているため、SyntaxErrorが表示されます。

これを試してみてください:

import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

fig = plt.figure() 
ax = Axes3D(fig) 

# Unpack file data. 
dat_file = np.loadtxt("filename.dat", unpack=True) 

# Plot data. 
ax.scatter(*dat_file, linewidth=2.0) 
plt.show() 

enter image description here

+1

それは本当にうまくいく!無効な構文エラーもなぜ起こったのかを指摘してくれてありがとう。 –

+0

このコードに別の.datファイルを簡単に追加する方法はありますか?だから私は同じ数字の2つの.datファイルをプロットすることができますか?各.datファイルには3つの列があるので、同じ図に2つのプロットを入れることを意味していました。私は多くのことを試みましたが、それを理解することはできません。 GNUプロットでは、 splot 'filename1.dat'、 'filename2.dat'です。 私はここでそのような多くのことを試みましたが、それを理解できませんでした。ありがとう!私が喜んで提案するなら、これを別の質問として投稿します。お邪魔して申し訳ありません。 –

+1

別の 'dat_file2 = np.loadtxt()'行で新しい.datファイルを読み込み、新しい 'ax.scatter(* dat_file2)'行をプロットするだけです。 – Gabriel

関連する問題