1

私はこれに対する答えをインターネットで探していました。

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
4

1 に答える 1

1

さて、あなたが更新したばかりのコードから、あなたの問題は明らかです。

何が問題なのか(クイックアンサー)

Gnuplotスクリプトを文字列としてPythonソースコードに含めています。"""トークンは、文字列の始まりと終わりを示します。問題は、次の行で文字列を終了することです。

#set style data boxes"""

繰り返しになりますが、この三重引用符の構文はGnuplot文字列の終わりを示しているため、以下はPythonコードであると予想されます。さて、setPythonとはまったく異なる何かを意味します(興味があれば、それは数学的なセットです)。のGnuplot構文setが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まったく同じデータが含まれ、各ファイルには1つの言語に固有のコードが含まれており、コードははるかに読みやすくなっています。

于 2012-05-04T20:04:10.613 に答える