在gnuplot中用小边距绘制重复点
我想知道是否有一种方法可以在gnuplot中绘制重复的点,而不让它们不可见,将点设置为(X+rand(-0.5;0.5),Y+rand(-0.5;0.5))。因此,该点不是放置在上一点的X/Y位置,而是根据随机性,向上、向下、向左或向右放置一点。那么就没有一个点是看不见的了在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)):
这种效应称为“抖动”。这是一个很好的例子:要向数据点添加随机偏差,只需使用
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是事件?在本例中,您可以只使用我的上一个脚本,但要调整它以使用相应的列。否则,您必须更具体地了解每列的含义。