LoginSignup
2
3

More than 3 years have passed since last update.

gnuplotの3Dデータをmatplotlibで描けるように変換しよう

Last updated at Posted at 2018-12-12

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もいいですよ!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3