如何使用R或Gnuplot绘制时间线 [英] How to plot timelines with R or Gnuplot
问题描述
使用R或Gnuplot绘制时间线的最佳和简便方法是如下图所示:
What is the best and easy way to plot, with R or Gnuplot, timelines like in this picture:
推荐答案
我的解决方案使用烛台"绘图样式,该样式似乎在X和Y列输入方面是固定的.结果,必须手动旋转输出图像,但这似乎是生成从基准轴浮动"的条的唯一选择.可能您需要稍微调整一下样式,但这应该可以帮助您入门.
My solution uses the 'candlestick' plotting style, which seems to be fixed in terms of X and Y column inputs. As a result the output image has to be manually rotated, but this seems to be the only option for generating bars which 'float' off the base axis. Probably you will want to tweak the styles a bit, but this should get you started.
样本输入数据;注意,我必须在第1列中添加任意的Y轴(旋转的X轴)坐标.
Sample input data; note I had to add the arbitrary Y-axis (rotated X-axis) coordinates in column 1:
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".)
(saved as 'dates4.dat' for script below.)
gnuplot脚本:
gnuplot script:
# 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"
希望有帮助!
这篇关于如何使用R或Gnuplot绘制时间线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!