gnuplot? matplotlib?
pythonを普段使っている僕は, どうしてもgnuplotを使いたくない!(笑)
ですが, 研究室の多くの方はgnuplotを使われている関係で, 3Dのマップデータをもらってもすぐにpythonで図を描けない...
それなら関数作っちゃおう
ということで, 簡単な関数を作ってみました.
numpyのお勉強になると思います.
コード
import numpy as np
def translate(file_name):
data = np.loadtxt(file_name)
x = np.unique(data[:,0])
y = np.unique(data[:,1])
z = data[:,2].reshape(len(x),len(y)).T
return x, y, z
import matplotlib.pyplot as plt
x, y, z = translate("gnuplot用のデータファイル")
plt.pcolormesh(x, y, z)
plt.show()
これだけです.
コードの説明
-
numpy.loadtxt()
与えられたファイルの中のデータを, ndarray形式で変換してくれます.
-
numpy.unique()
今回の肝! ndarrayの中にある要素の内容をそのままndarray形式で返してくれます.
例えば
x = np.array([1,3,6,2,0,2,7,8,1,3,5,10])
y = np.unique(x)
print(y) # => array([0,1,2,3,5,6,7,8,10])
という風に, 構成要素を抜き出してくれます.
最後に
gnuplotもいいけど, matplotlibもいいですよ!