我在gnuplot中有以下数据:
2012-09-18 0 2 12
2012-03-15 1 4 5
2012-12-18 24 8 11
2012-09-18 2 8 11
2012-03-15 16 5 5
2011-12-06 5 2 3
2012-12-18 3 12 8
2012-09-18 4 4 8
2012-03-29 11 6 2
2011-12-06 9 7 3
2012-12-18 6 7 8
2012-09-18 4 3 8
2012-02-09 27 2 1
2012-12-18 2 1 8
2012-09-18 6 14 8
第1栏; x(日期)
第二栏; ÿ
第3栏;点颜色
第4栏;出现次数(该点重复)
我需要编写一个gnuplot程序:
另一个问题是,学习gnuplot的最佳和最快的方法/工具是什么?
答案 0 :(得分:2)
这应该是我对您的其他问题drawing duplicated points in gnuplot with small margin的答案的延伸:
您需要将第一列解释为时间数据。为此你需要
set xdata time
set timefmt '%Y-%m-%d'
为了设置点颜色,最好定义一个调色板,然后使用linecolor palette
,它根据调色板中的值设置点颜色。
因此,使用drawing duplicated points in gnuplot with small margin中的解释最终脚本是:
reset
filename = 'data.dat'
stats filename using 4 nooutput
set xdata time
set timefmt '%Y-%m-%d'
set format x '%Y-%m'
rand_x(x) = x + 60*60*24*7 * (rand(0) - 0.5)
rand_y(y) = y + (rand(0) - 0.5)
plot for [i=0:int(STATS_max)-1] filename \
using (rand_x(timecolumn(1))):(i < $4 ? rand_y($2) : 1/0):3 pointtype 7 linecolor palette notitle
您必须考虑的其他一些事项是:
stats
来电必须在set xdata time
之前,因为统计信息不适用于时间数据。using
语句中的时间数据进行计算时,需要使用timecolumn
函数(与通用案例中的column
或$..
相对)。这将时间作为时间戳(即以秒为单位)。x
和y
需要两个不同的随机函数,因为缩放比例非常不同。在这里,我在时间轴上使用了一周(60*60*24*7
秒)的“抖动”。4.6.4的结果是:
关于学习gnuplot
的问题的一些评论:尝试自己解决问题,然后发布更具体的问题!浏览gnuplot演示以查看可能的内容,查看使用的功能或绘图样式,在文档中查找,提供了哪些选项/设置?玩这些演示,并尝试将其应用到您的数据集等。最后它的所有练习(我已经使用gnuplot 12年了......)。