1

私のデータは非常に単純で、タイムスタンプと次のような数字だけです。

  • 2013-01-23 08:27:55 2801
  • 2013-01-23 08:33:13 2801
  • 2013-01-23 08:38:31 2660
  • 2013-01-23 08:43:49 2785
  • 2013-01-23 08:49:07 2785

別のシステムからデータを取得します。日付と時刻の間のスペース、および「日時」と数値の間のタブキー。

全体の時間枠は数時間..数日です。この全体的な時間枠には、1つ以上の興味深い部分(通常は数時間)が含まれています。グラフの分析をより簡単かつ迅速に行えるように、これらの興味深い部分を何らかの方法でマークまたは強調表示したいと思います。

興味深い時間枠は手動で指定する必要があります。たとえば、2014-01-2310:00:00から2013-01-2412:00:00までの2時間の時間枠です。

線グラフの背景に長方形を描くことは1つの可能性であり、線の色(または同様のもの)を変更することは別の可能性です。

手動/個別に定義されたタイムスタンプからどのようにそれを行うことができますか?私が見つけた最善の方法は、データを空の行で分割し、次のようなものを使用することでした(http://www.gnuplotting.org/introduction/ploting-data/から):

set style line 1 lc rgb '#0060ad' lt 1 lw 2 pt 7 ps 1.5   # --- blue
set style line 2 lc rgb '#dd181f' lt 1 lw 2 pt 5 ps 1.5   # --- red
plot 'plotting-data3.dat' index 0 with linespoints ls 1, '' index 1 with linespoints ls 2

しかし、データの分割は少し難しいです(?)。目標を達成するためのエレガントなgnuplot手段を探しています。それが本当に最良の選択肢である場合、堅牢な分割も可能である可能性があります。

以下はプロット機能で、うまく機能しますが、グラフの選択した部分をマーク/ハイライトしたいと思います。

-Paavo

function my_gnuplot {
  if [ $# -ne 3 -o -z "$1" -o -z "$2" -o -z "$3" ]
  then
    echo $0 $FUNCNAME Invalid parameters, exiting
    exit 3
  fi

  sid="$1" ; shift
  stime="$1" ; shift
  etime="$1" ; shift

  if [ $sid -gt 0 -a $sid -lt 10 ]
  then
    title=0$sid
  else
    title=$sid
  fi

  gnuplot <<- EOF
  reset
  set terminal png size 1800,900 enhanced font myfont.ttf 10

  set xdata time
  set timefmt "%Y-%m-%d %H:%M:%S"
  set format x "%Y-%m-%d %H:%M"

  set title "SID=$title from $stime to $etime"
  set grid

  set xrange [ "$stime" : "$etime" ]
  set yrange [ -2000 : 6000 ]
  set style data linespoints

  plot "sid_data_$sid.txt" using 1:9 notitle
        EOF
}
4

1 に答える 1

3

長方形を使用して、スペースを非常に簡単に埋めることができます。

set xdata time
set timefmt '%Y-%m-%d %H:%M:%S'
set object 1 rectangle from "2013-01-23 08:33:13",graph 0 to "2013-01-23 08:43:49",graph 1 fs solid fc rgb "red" behind
plot 'test.dat' u 1:3 w lines ls -1
于 2013-01-25T16:10:39.823 に答える