我一直在网上搜索这个答案。
似乎有很多版本如何在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
答案 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
包含完全相同的数据,每个文件包含一种语言特有的代码,并且您的代码更具可读性。