具有以下文本文件

0  0  net0 aaaa bbbb cccc
1  1  net1 zzz
2  2  net2 xxx
3  3  net3 yyy
4  5  net4 ttt 0 0
5  5  net5

我需要将前两列描述的所有点都绘制为x,y坐标,并在每个点处锚定以下列(例如3:6)中报告的信息。这些信息必须用换行符隔开,例如(0,0)应该报告(当鼠标悬停在其上时)

net0
aaaa
bbbb
cccc

我正在使用的脚本如下,但仅适用于三列

set terminal canvas enhanced mousing
set termoption enhanced
set label at 0,0 "Origin"
set title 'mouse over points'
plot 'test.txt' using 1:2:3 with labels hypertext point pt 7 ps var lc rgb "black"

看来, 使用作品数据文件修改只有三个条目。 有什么帮助吗?

#1楼 票数:0

不幸的是您的文本没有被""包围。 不过,您可以使用gnuplot来解决问题,而无需任何外部工具。

您没有指定数据列是由TAB还是由空格分隔。 在下文中,我假设它们被单个空格分隔(如果没有,则需要相应地修改代码)。

程序:

  1. 通过设置set datafile separator "\\n"以全行读取数据
  2. word()提取数字
  3. 将其余部分作为标签文字
  4. '\\n'替换空格

码:

### Hypertext with columns
reset session

$Data <<EOD
0 0 net0 aaaa bbbb cccc
1 1 net1 zzz
2 2 net2 xxx
3 3 net3 yyy
4 5 net4 ttt 0 0
5 5 net5
EOD

# replace function
# replaces string s1 by string s2 in string s
Replace(s,s1,s2) = (RP_s="", RP_n=1, (sum[RP_i=1:strlen(s)] \
    ((s[RP_n:RP_n+strlen(s1)-1] eq s1 ? (RP_s=RP_s.s2, RP_n=RP_n+strlen(s1)) : \
    (RP_s=RP_s.s[RP_n:RP_n], RP_n=RP_n+1)), 0)), RP_s)

set datafile separator "\n"
GetNumber(n) = real(word(strcol(1),n))
GetText(s) = (s[strstrt(s," ")+1:])[strstrt(s[strstrt(s," ")+1:]," ")+1:]
TextToColumn(s) = Replace(GetText(s),' ','\n')

plot $Data u (GetNumber(1)):(GetNumber(2)):(TextToColumn(strcol(1))) w labels hypertext \
    point pt 7 ps 3 lc rgb "red" notitle
### end of code

结果:

在此处输入图片说明

  ask by John translate from so

未解决问题?本站智能推荐:

1回复

gnuplot-微调和格式化标签“末尾”

假设我有一个脚本,最后用 最终看起来像 如何将标签移到更远离线条的位置,并以线条颜色对其进行着色?
1回复

gnuplot-在图的右侧添加中位数的标签

我正在使用gnuplot的STATS来绘制一些数据的中位数。 在图的右侧,中位数与图的边界相交,我想放置一个标签,说明中位数的值-或其中的最大值的百分比。 我如何最好地做到这一点?
3回复

在Gnuplot中绘制“带标签”时如何证明标签的合理性?

下面的 plot 命令生成一个条形图,在每个条形上方将值绘制为标签,格式为 gprintf: 我希望值标签右对齐,以便我可以使用更好看的 Helvetica 字体而不是 Courier 来对齐小数点。 那么,如何在上述命令中包含理由? 我未能在 Gnuplot 文档或 Web 上找到有关此特定问题的
1回复

gnuplot-“模拟”输入以对坐标进行硬编码

假设我要为每个x坐标打印一个标签,但要固定高度,而不是到所讨论点的偏移量? 即我要替换: 用类似的东西 有这种可能性吗?
1回复

gnuplot-将ylabel旋转90度后,将其放置在图的顶部

旋转ylabel非常简单(或者应该是): 但是,在旋转ylabel之后,如何将其放置在图的顶部而不是其侧面?
3回复

向gnuplot中的标签添加彩色线条?

我想知道是否可以在 gnuplot 的标签命令中添加彩色线条? 也就是说,假设我想在标签命令中的一些文本后添加一条红线: set label "some text here which is then followed by a red horizontal line -----" at 100,2
2回复

Gnuplot绘制带有变化距离的标记点

我正在尝试从一个文件中绘制一些数据,该文件包含一个时间戳和一个字符串注释以及其他各种数据。 到目前为止,我想知道的是将所有注释与时间一起绘制为标签,但是我正在寻找某种智能间距,以使注释不会重叠。 我也在寻找一种过滤评论的方法。 我得到了另一列,该列指定注释是否应该隐藏。 我正在将此S
1回复

gnuplot标签中的上标/下标从数据文件中读取

我有一个这样的输入文件要绘制。 第三列用于该点上的标签(以乳胶格式)。 如何在乳胶编译后出现这些标签(如上标/下标/希腊字母等)。