次のようなデータを含む3列を含むcsvファイルを使用しています。
Country name, Year, Population value
Afghanistan, 2000, 8774440
Afghanistan, 2001, 8774441
Afghanistan, 2002, 8774442
Germany, 2000, 18774440
Germany, 2001, 18774442
Germany, 2002, 18774444
人口増加、つまり年をx軸、値をy軸としてプロットしようとしています。
私はgnuplotを初めて使用し、最初の列の値を引数/パラメーターとして使用して2番目と3番目の列をプロットできるかどうか疑問に思いました。
sedlikeを使用して特定の行をプロットできることを知っています
plot "<(sed -n '0,2p' p.csv)" using 2:3 with lines
ただし、これはスクリプトにハードコードされている場合にのみ機能します
私はそれを機能させるためにawkを使用しようとしましたが、役に立ちませんでした
plot " <(awk '{$1=='Afghanistan'}' p.csv" using 3:4 with lines
どんな助けもいただければ幸いです
sedやawkは必要ありません。三項演算子をフィルターとして使用できます(を参照help ternary
)。(数字によるフィルタリングについて)同様の質問があるはずですが、今は見つかりません。
コード:
### plot data filtered with ternary operator
reset session
set datafile separator comma
$Data <<EOD
Afghanistan, 2000, 8774440
Afghanistan, 2001, 8774441
Afghanistan, 2002, 8774442
Germany, 2000, 18774440
Germany, 2001, 18774442
Germany, 2002, 18774444
EOD
mySelection = "Afghanistan"
myFilter(n) = strcol(n) eq mySelection ? $3 : NaN
set format y "%.0f"
set key top left
set xtics 1
plot $Data u 2:(myFilter(1)) w lp pt 7 title mySelection
### end of code
結果:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加