Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在gnuplot中用小边距绘制重复点_Gnuplot_Duplicate Removal - Fatal编程技术网

在gnuplot中用小边距绘制重复点

在gnuplot中用小边距绘制重复点,gnuplot,duplicate-removal,Gnuplot,Duplicate Removal,我想知道是否有一种方法可以在gnuplot中绘制重复的点,而不让它们不可见,将点设置为(X+rand(-0.5;0.5),Y+rand(-0.5;0.5))。因此,该点不是放置在上一点的X/Y位置,而是根据随机性,向上、向下、向左或向右放置一点。那么就没有一个点是看不见的了 这种效应称为“抖动”。这是一个很好的例子:要向数据点添加随机偏差,只需使用rand函数: myrand(x) = (x + rand(0) - 0.5) plot 'data.dat' using (myrand($1)):

我想知道是否有一种方法可以在gnuplot中绘制重复的点,而不让它们不可见,将点设置为(X+rand(-0.5;0.5),Y+rand(-0.5;0.5))。因此,该点不是放置在上一点的X/Y位置,而是根据随机性,向上、向下、向左或向右放置一点。那么就没有一个点是看不见的了


这种效应称为“抖动”。这是一个很好的例子:

要向数据点添加随机偏差,只需使用
rand
函数:

myrand(x) = (x + rand(0) - 0.5)
plot 'data.dat' using (myrand($1)):(myrand($2))
rand(0)
生成范围为
[0:1]
的值

如果要多次绘制每个点,则需要迭代多次:

plot for [i=0:4] 'data.dat' using (myrand($1)):(myrand($2))
为了考虑到发生的次数,就像在你的链接中显示的那样,你必须欺骗一点

考虑数据文件(取自),第三列包含发生次数:

1 1 4
1 2 7
1 3 6
2 1 9
2 2 5
2 3 11
3 1 1
3 2 2
3 3 3
4 1 12
4 2 8
4 3 10
一种方法是从数据文件中提取最大发生次数,然后用迭代进行绘图。如果出现次数高于当前迭代索引,则在每次迭代中添加一个点。通过将一个坐标设置为
1/0
,跳过一个点:

stats 'data.dat' using 3 nooutput
set style line 1 pointtype 6 linecolor -1
myrand(x) = x + 0.3 * (rand(0) - 0.5)
plot for [i=0:int(STATS_max)-1] 'data.dat' \
    using (myrand($1)):(i < $3 ? myrand($2) : 1/0) linestyle 1 notitle

要向数据点添加随机偏差,只需使用
rand
功能:

myrand(x) = (x + rand(0) - 0.5)
plot 'data.dat' using (myrand($1)):(myrand($2))
rand(0)
生成范围为
[0:1]
的值

如果要多次绘制每个点,则需要迭代多次:

plot for [i=0:4] 'data.dat' using (myrand($1)):(myrand($2))
为了考虑到发生的次数,就像在你的链接中显示的那样,你必须欺骗一点

考虑数据文件(取自),第三列包含发生次数:

1 1 4
1 2 7
1 3 6
2 1 9
2 2 5
2 3 11
3 1 1
3 2 2
3 3 3
4 1 12
4 2 8
4 3 10
一种方法是从数据文件中提取最大发生次数,然后用迭代进行绘图。如果出现次数高于当前迭代索引,则在每次迭代中添加一个点。通过将一个坐标设置为
1/0
,跳过一个点:

stats 'data.dat' using 3 nooutput
set style line 1 pointtype 6 linecolor -1
myrand(x) = x + 0.3 * (rand(0) - 0.5)
plot for [i=0:int(STATS_max)-1] 'data.dat' \
    using (myrand($1)):(i < $3 ? myrand($2) : 1/0) linestyle 1 notitle

thx非常感谢您的帮助,但是不添加“事件”列也可以吗?@zoma.saf当然可以。那将是更简单的方法。如果你只是想画出随机移动的每个点,只需使用我答案中的第一个“脚本”。如果要移动每个点,比如说
5次
,只需使用取消
stats
部分,并使用(myrand($1)):(myrand($2))
为[i=0:4]“data.dat”使用
绘图。如果这是你想要的,我可以把它加到答案上。明白了,因为我还是新来的,所以不知道这个功能:)2012-09-180762011-10-050701212-180812-09-180812-03-150852012-12-180811-09-180811-2012-09-180811-03-150852011-12-06383-2012-12-1808-09-1808-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-2012-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08,我如何在上面的数据上循环,迭代次数是第4列?@zoma.saf Uff,很难说。您是否需要第一列,或者2是
x
,3是
y
,4是事件?在本例中,您可以只使用我的上一个脚本,但要调整它以使用相应的列。否则,您必须更具体地了解每个列的含义。thx对于大帮助来说有很多,但是不添加“事件”列是否可以完成?@zoma.saf当然可以。那将是更简单的方法。如果你只是想画出随机移动的每个点,只需使用我答案中的第一个“脚本”。如果要移动每个点,比如说
5次
,只需使用取消
stats
部分,并使用(myrand($1)):(myrand($2))
为[i=0:4]“data.dat”使用
绘图。如果这是你想要的,我可以把它加到答案上。明白了,因为我还是新来的,所以不知道这个功能:)2012-09-180762011-10-050701212-180812-09-180812-03-150852012-12-180811-09-180811-2012-09-180811-03-150852011-12-06383-2012-12-1808-09-1808-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-2012-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08-08,我如何在上面的数据上循环,迭代次数是第4列?@zoma.saf Uff,很难说。您是否需要第一列,或者2是
x
,3是
y
,4是事件?在本例中,您可以只使用我的上一个脚本,但要调整它以使用相应的列。否则,您必须更具体地了解每列的含义。