gnuplot有条件的'使用'导致x轴破裂

时间:2017-08-21 22:47:52

标签: gnuplot

跟踪手机上的电池放电/充电情况。数据形状类似于' V'。充电百分比和经过时间(以秒为单位),如下所示:

plots=""
my_xrange=0

files=system("ls -1B data/*.csv | sort -k2 -t '-'")
do for [ file in files ] {
    this="'".file."' ".'using ($2/3600):1 notitle, '
    plots=plots.this
}
eval('plot '.plots)

以下是我处理 n 文件并将它们一起绘制的方式:

stats

(由于链接太多,幸福的情节被忽略了)

然后老板过来说" uphills"分散注意力,我可以只画出" downhills"好吗?不用担心,xrange会给我最小值,所以我plots="" my_xrange=0 files=system("ls -1B *.csv | sort -k2 -t '-'") do for [ file in files ] { stats file using ($2/3600):1 prefix "STATS" nooutput if ( STATS_pos_min_y > my_xrange ) { my_xrange = STATS_pos_min_y } this="'".file."' ".'using ($2/3600):1 notitle, ' plots=plots.this } print sprintf( 'stats: plot xrange is %.2f', my_xrange ) set xrange [0:my_xrange] eval('plot '.plots) 。活泉!

using

3

知道那里必须是一种不绘制上坡的方法,所以我最终会以this="'".file."' ".'using (($2/3600) <= STATS_pos_min_y ? $1 : 1/0) notitle, ' 为条件。

using
  1. X轴值与先前的情节不匹配
  2. 情节线在另一个
  3. 之上合并

    xrange obliterates some uphills

    我需要使用2美元/ 3600美元,因为我希望以小时数表示事物。哦,当然,我可以编写一个脚本来按摩数据,甚至在它进入gnuplot之前,但是它承认了失败。

    我在使用{{1}}时没有理解什么?

1 个答案:

答案 0 :(得分:2)

整个数据的绘图命令(紫色线)是

plot file using ($2/3600):1  with linespoints

而条件数据(蓝线)的是

plot file using ((($2/3600) <= STATS_pos_min_y) ? $1 : 1/0) with linespoints

using语句仅选择($2/3600) <= STATS_pos_min_y的数据点。但是,您没有指定在x轴上应该绘制那些数据点的位置,因此gnuplot假设它只是数据文件(0,1,2,3,4)中的行号。您必须像在无条件图中一样指定x轴上的位置:

plot file using ($2/3600):((($2/3600) <= STATS_pos_min_y) ? $1 : 1/0) with linespoints

应该这样做。

顺便说一句,格式在SO评论中相当有限。要发布代码,通常最好编辑您有更多格式选项的问题。