gnuplot:绘制相同x值的多个y值的范围

时间:2015-09-07 09:32:31

标签: range max gnuplot min

我的数据文件有一个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选项,但这是针对不同的数据集

1 个答案:

答案 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"

awk plot

注意:

  • 为简单起见,我清除了文件的第一行
  • plot "< command "它执行命令并将其用作输入数据
  • man sortman awk获得sortawk计划的全部帮助
  • 检查associative arrays in awk以更深入了解awk