使用 gnuplot 中的文本列作为绘图参数
Using a text column in gnuplot as a paramter for plotting
我正在使用一个包含 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 的新手,想知道是否可以使用第一列绘制第二列和第三列
列的值为 argument/parameter
我知道可以使用 sed 绘制特定行,例如
plot "<(sed -n '0,2p' p.csv)" using 2:3 with lines
但这只有在硬编码到我的脚本中时才有效
我曾尝试使用 awk 使其正常工作,但无济于事
plot " <(awk '{=='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 ? : 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
结果:
我正在使用一个包含 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 的新手,想知道是否可以使用第一列绘制第二列和第三列 列的值为 argument/parameter
我知道可以使用 sed 绘制特定行,例如
plot "<(sed -n '0,2p' p.csv)" using 2:3 with lines
但这只有在硬编码到我的脚本中时才有效
我曾尝试使用 awk 使其正常工作,但无济于事
plot " <(awk '{=='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 ? : 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
结果: