【问题标题】:gnuplot, drawing duplicated points and coloringgnuplot,绘制重复点和着色
【发布时间】:2013-10-18 12:44:28
【问题描述】:

我在 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

第一列; x(日期)

第二列;是的

第三列;点颜色

第 4 列;出现次数(点重复)

我需要编写一个 gnuplot 程序:

  1. 绘制我的 (x,y) 点。
  2. 根据第 3 列的值赋予每个点不同的颜色(可能超过 50 种不同的颜色)。
  3. 如果第 4 列大于 0,则该点被复制,并且必须绘制 n 次,并为其 x,y 随机定位,并留有小余量。例如,(rand(x)-0.5,rand(y)-0.5)。

另一个问题,学习 gnuplot 最好和最快的方法/工具是什么?

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    这应该是我对您的其他问题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
    

    您必须记住的其他一些事项是:

    1. stats 调用必须在 set xdata time 之前,因为统计信息不适用于时间数据。
    2. 在using 语句中使用时间数据进行计算时,需要使用timecolumn 函数(相对于一般情况下的column 或$..)。这会将时间作为时间戳(即以秒为单位)。
    3. 因此,您需要两个不同的随机函数用于x 和y,因为缩放比例非常不同。在这里,我在时间轴上使用了一周的“抖动”(60*60*24*7 秒)。

    4.6.4 的结果是:

    对你关于学习的问题的一些评论gnuplot:尝试自己解决你的问题,然后发布更具体的问题!浏览 gnuplot 演示以查看可能的功能,查看使用了哪种功能或绘图样式,在文档中查找它们,提供哪些选项/设置?玩转这些演示,并尝试将其应用到您的数据集等。最后,一切都与实践有关(我已经使用 gnuplot 12 年了......)。

    【讨论】:

    • 非常感谢,你真是太棒了,你帮了我很多。真的很感激:)我会尽力做你告诉我的:)
    • 我应用了您在上面写的内容,效果很好,但视图不适合我的数据。我添加了这两个命令: set xrange [GPVAL_DATA_X_MIN:GPVAL_DATA_X_MAX] set yrange [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX] 但它对我不起作用!有什么线索吗?
    • 这些变量仅在plot 命令之后可用,请参阅help gnuplot-defined。所以你可以做set terminal push; set terminal unknown; ... plot ...; set terminal pop; replot,或者阅读set autoscale和set offset。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多