Gnuplot命令转matplotlib

1 投票
1 回答
1405 浏览
提问于 2025-04-18 05:55

我正在编辑一些旧软件,这些软件是用Fortran写的,并且使用gnuplot来绘图。我想把其中的一些部分移植到Python上,但有点困惑。

我有一个包含飓风数据的矩阵文件,使用以下命令来绘制图形:

plot 'file.txt' matrix with image 1:999:1:480 w l t       ""

我对gnuplot的命令不是很理解,所以当我用matplotlib的绘图功能时,得到的结果完全不同。

有没有人知道我该如何在Python中以相同的方式绘制这个图?

1 个回答

2

我同意Christoph的看法:你可能的gnuplot命令行大概是这样的:

plot 'file.txt' matrix with image every 1:999:1:480  t  ""

plot的设置中,with imagewith line是有冲突的。
Gnuplot喜欢懒惰的方式。你要么讨厌它,要么喜欢它:-)

你总是可以找到更简短的命令:

plot  ---> pl  
with  ---> w  
lines ---> l  
title ---> t  
and so on...

在Python中,你可以尝试类似这样的代码(如果你的命令行中缺少every这个词,还需要过滤数据...)

#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

# Read in data from an ASCII data table
data = np.genfromtxt('data.txt')

ax.imshow(data, cmap=plt.cm.gray, interpolation='nearest')
#ax.imshow(data, cmap=plt.cm.gray)
ax.set_title('My Title')
plt.show()

这段代码能重现gnuplot示例中help image的效果。
data.txt文件中,我放入了和示例相同的数据。

5 4 3 1 0
2 2 0 0 1
0 0 0 1 0
0 1 2 4 3

撰写回答