尝试使用set样式行时GNUplot 4.2语法错误

时间:2012-05-04 18:14:12

标签: python gnuplot

我一直在网上搜索这个答案。

似乎有很多版本如何在gnuplot中绘制颜色线。 我有一个包含4列的数据文件。我想用不同的颜色绘制每一列。 这是我根据gnuplot帮助文件使用的代码片段,但是当我使用这些代码时出现语法错误。

set style line 1 lt 1 lc 1 lw 3 # red
set style line 2 lt 1 lc 2 lw 3 #green
set style line 3 lt 1 lc 3 lw 3 #blue
set style line 4 lt 1 lc 4 lw 3 #magenta

我将终端设置为postscript。

我已尝试过这种线型的所有组合,包括linestyle和lc rgb'red',例如,它们都不起作用!

谁能告诉我出了什么问题?

让我澄清一下,这是python脚本中的gnuplot脚本。代码如下所示:

plot = open('plot.pg','w')
plot_script = """#!/usr/bin/gnuplot
reset
set terminal postscript 
#cd publienhanced color
set output "roamingresult.ps"
set xlabel "time (seconds)"
set xrange [0:900]
set xtics (0, 60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900)
set ylabel "AP1         AP2         AP3       AP4"
set yrange [0:5]
set nokey
set grid
set noclip one
set ytics 1
#set style data boxes"""
set style line 1 lt 1 lc 1 lw 3
set style line 2 lt 1 lc 2 lw 3
set style line 3 lt 1 lc 3 lw 3
set style line 4 lt 1 lc 4 lw 3

1 个答案:

答案 0 :(得分:1)

好的,从您刚刚更新的代码中,您的问题很明显。

出了什么问题(快速回答)

您将Gnuplot脚本作为字符串包含在Python源代码中。 """标记表示字符串的开头及其结尾。问题是你用这一行终止字符串:

#set style data boxes"""

同样,这个三重引号语法标志着Gnuplot字符串的结束,因此下面的内容应该是Python代码。现在,set意味着与Python完全不同的东西(如果你很好奇,那就是mathematical set)。你的set的Gnuplot语法与Python中的含义不匹配,所以这就是为什么它会给你一个语法错误。

将三引号移动到Gnuplot脚本的末尾将解决问题。 然而,有一个更简单的解决方案。

更好的方法

您不应将Gnuplot代码直接嵌入到Python脚本中。相反,你应该从另一个文件中读取脚本(文件完全是Gnuplot代码),并以这种方式处理它。

因此,请仅使用您的Gnuplot代码保存文件(例如plot.script):

#!/usr/bin/gnuplot
reset
set terminal postscript 
#cd publienhanced color
set output "roamingresult.ps"
set xlabel "time (seconds)"
set xrange [0:900]
set xtics (0, 60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900)
set ylabel "AP1         AP2         AP3       AP4"
set yrange [0:5]
set nokey
set grid
set noclip one
set ytics 1
#set style data boxes
set style line 1 lt 1 lc 1 lw 3
set style line 2 lt 1 lc 2 lw 3
set style line 3 lt 1 lc 3 lw 3
set style line 4 lt 1 lc 4 lw 3

然后在Python中与此文件进行交互,如下所示:

plot_script = open("plot.script", "r").read()

最终结果

plot_script包含完全相同的数据,每个文件包含一种语言特有的代码,并且您的代码更具可读性。