如何使用R或Gnuplot绘制时间线 [英] How to plot timelines with R or Gnuplot

查看:108
本文介绍了如何使用R或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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆