在gnuplot中使用set object circle时,如何分配标签?

时间:2014-05-15 23:51:32

标签: gnuplot

我正在尝试为我用

绘制的特定点指定标签
set object circle at first 3,3 radius char 1.5 fill color rgb "red" fillstyle solid no border

我无法找到任何方法来实际绘制带有设置对象的圆圈,并为其指定标签,而不必强制创建单独的标签并将其手动放置在该点旁边。

是否有一种简单的方法可以在设置对象圈和单独的标签旁边用标签绘制单个点?感谢。

3 个答案:

答案 0 :(得分:3)

对于圆圈的特殊情况,您可以使用set label ... point pointtype ...将可用pointtype的点附加到标签:

set label 'mylabel' at 0,0 left offset char 2,0 point pointtype 7 pointsize 5 lc rgb 'blue'
plot x

enter image description here

答案 1 :(得分:2)

据我所知,这是不可能的。甚至demo script也分别使用标签和对象。您可以定义自己的宏(此示例使用框而不是圆):

#!/usr/bin/gnuplot -p

set macro

labelMacro(i,x,y,l) = sprintf('set obj %d rect at %f,%f size char strlen("%s"), char 1; set label %d at %f,%f "%s" front center', i, x, y, l, i, x, y, l)

label1 = labelMacro(1, 0, 0, "Hello World")
label2 = labelMacro(2, -2, -2, "Hello World")
label3 = labelMacro(3, 2, 2, "Hello World")
label4 = labelMacro(4, -2, 2, "Hello World")
@label1; @label2; @label3; @label4;

set xrange [-5:5]
plot x

以上代码生成以下图表:

Graph with macro boxes

答案 2 :(得分:2)

在gnuplot中,标签和对象是不同的东西,它们占据不同的名称空间"。

@ ilent2的答案是可行的,通过小修改而不是宏可以使用eval:

labelMacro(i,x,y,l) = sprintf('set obj %d rect at %f,%f size char strlen("%s"), char 1; set label %d at %f,%f "%s" front center', i, x, y, l, i, x, y, l)

eval labelMacro(1, 0, 0, "Hello World")

相对较新版本的gnuplot也有盒装标签:

set label 137 "foo" boxed