我的数据文件有一个x值的多个y值。我需要绘制所有x值的max和min y值。 gnuplot
中是否有命令这样做?
例如:数据文件
x y
1 10
2 6
1 14
1 12
2 25
2 14
我想要一个图表,其中x轴上的1有10和14绘制,y轴上的2有6和25。
我找到了统计数据,但是找到了整个数据集的最小值和最大值,但没有找到单个x值的最小值和最大值。
有Candlesticks选项,但这是针对不同的数据集
答案 0 :(得分:1)
Gnuplot旨在快速绘制预处理数据
但是,在Linux下,您可以利用许多现成的工具来操纵您的数据
如果您的数据集不是很大,您可以选择使用其中一些来自gnuplot
的 inline 。
sort
可以是其中之一(以及awk
),您可以在此处阅读4次文件。
plot "<sort data.dat -k2 -n | sort -n -k1 -u" t "Min" \
,"<sort data.dat -k2 -n -r| sort -n -k1 -u" t "Max"
使用awk
,您只需一次扫描文件即可完成更精细的工作
set xlabel "My x axis [a.u.]"
set ylabel "My y axis [a.u.]"
set style fill transparent solid 0.4
plot "< awk '{ Q[$1]++; \
if (Q[$1]==1){ Min[$1]=$2;Max[$1]=$2; } \
else \
{ if (Min[$1]>$2) {Min[$1]=$2;} \
else {if (Max[$1]<$2) Max[$1]=$2;} } \
} \
END {for (i in Min) print i,Min[i],Max[i]}' data.dat " \
using ($1):($2):($3) w filledcurve title "Min and Max" lc rgb "#00A000"
注意:
plot "< command "
它执行命令并将其用作输入数据man sort
和man awk
获得sort
和awk
计划的全部帮助awk
。