Gnuplot.py で頑張って pm3d map を使う方法
Gnuplot.py に入っているオプションは,matrixを受け付けてくれないので ちょっとした(?)ハックが必要だった.かなり試行錯誤したけど.
ソース:
import Gnuplot
import numpy
gnp = Gnuplot.Gnuplot(debug=1)
def plot_mat(mat0):
# 端の行と列がなくなってしまうので,ダミーを入れる
(x,y) = mat0.shape
mat1 = numpy.zeros((x+1, y+1))
mat1[:x,:y] = mat0
# splot に 'matrix' オプションを加えるためのhack
# /usr/lib/python2.5/site-packages/Gnuplot/PlotItems.py を読んだ
plot = Gnuplot.PlotItems.Data(mat1, using='($2):($1):($3)')
if plot._option_sequence[0] != 'matrix':
plot._option_sequence.insert(0,'matrix')
plot._options['matrix'] = (None,"matrix")
# plot
gnp('set pm3d map corners2color c1')
gnp('set xrange [*:*] reverse')
gnp.splot(plot)
gnp('unset pm3d')
gnp('set xrange [*:*] noreverse')
plot_mat(
numpy.array([[0, 0 , 0 , 0 , 1],
[0, 0.4, 0.1, 0.0, 0],
[0, 1.0, 0.6, 0.1, 0],
[0, 0.1, 1.0, 0.8, 0],
[0, 0 , 0 , 0 , 0]])
)
