3

この写真のようなタイムラインをRまたはGnuplotでプロットするための最良かつ簡単な方法は何ですか?

ここに画像の説明を入力してください

4

3 に答える 3

2

私のソリューションでは、X 列と Y 列の入力に関して固定されているように見える「ローソク足」プロット スタイルを使用しています。その結果、出力画像を手動で回転させる必要がありますが、ベース軸から「浮く」バーを生成するには、これが唯一のオプションのようです。おそらく、スタイルを少し調整したいと思うでしょうが、これで始められるはずです。

サンプル プロジェクト タイムライン プロット

サンプル入力データ。列 1 に任意の Y 軸 (回転した X 軸) 座標を追加する必要があることに注意してください。

1 proj1     768.83      2011-05-12 2013-06-19
2 proj2     426.79      2011-06-15 2012-08-15
3 proj3     429.89      2011-06-17 2012-08-20
4 proj4     318.02      2012-01-06 2012-11-19
5 proj5     278.72      2011-11-10 2012-08-15
6 proj6     231.16      2011-11-14 2012-07-02
7 proj7     230.27      2011-11-15 2012-07-02
8 proj8     230.23      2011-11-15 2012-07-02
9 proj9     581.81      2011-11-15 2013-06-19
10 proj10   230.08      2011-11-15 2012-07-02

(以下のスクリプト用に「dates4.dat」として保存されます。)

gnuplot スクリプト:

# horizontal timelines / time bars with gnuplot ; manually rotate result image at end

# size specification controls landscape vs. portrait, this is for A4 paper size
set terminal pdf size 21cm,29.7cm
set output 'dates.pdf'

# margins get confused so set explicitly
set lmargin at screen 0.04
set bmargin at screen 0.07
set tmargin at screen 0.97

# rotation will swap Y and X axis

# input Y data as date values
set ydata time
set timefmt "%Y-%m-%d"

# y coordinates now specified in time values
set yrange ['2011-03-01':'2014-01-01']

# normal Y axis labels end up on top of graph, don't want that
unset ytics

# format y2 axis for time scale, this will appear along bottom of graph
set y2data time
set format y2 "%b %Y"
set y2tics font "Courier, 8"
set y2tics rotate by 90 

# y2tics 'incr' measured in seconds for y2data time, this is 4 months = 4*30*24*60*60
set y2tics '2011-05-12',10368000,'2013-12-01'

set xrange [-1:28]
set xtics font "Courier, 8"
set xtics rotate by 90 offset 0,-5 out nomirror

# cannot rotate key (dataset label), so must create manually
unset key
set label 'elapsed project time' at 0,'2013-06-15' rotate font "Courier, 8"
set object 1 rect from -0.1,'2013-11-01' to 0,'2013-12-01' fillstyle solid noborder fillcolor rgb "red"

# note duplication of date columns 4 and 5 so don't get whiskers
plot "dates4.dat" using 1:4:4:5:5:xticlabels(2) with candlesticks fillcolor rgb "red"

それが役立つことを願っています!

于 2013-11-29T14:31:52.083 に答える
1

rについてはわかりませんが、gnuplotでは、軸を時間形式で宣言できます。y 軸の例を実現するには:

set ydata time # tells gnuplot that y is a time series
set ylabel 'Submission day in August'
set timefmt '%Y-%m-%d' # this should be set to the format of your date series
set format y '%d' # sets the axis labels format

それ以外は、gnuplot は複数の系列、グリッド、および任意の形状をサポートしているので、問題ないはずです。

お役に立てれば

于 2012-11-19T23:26:29.987 に答える