天道酬勤,学无止境

在 gnuplot 中,如何用坐标标记图中的每个点?(In gnuplot, how to label each point in the plot with its coordinates?)

问题

我有一个数据文件 abc.dat,我想绘制它并标记每个坐标,如 (1,5)、(4,6)、(2,8) 等等......

abc.dat就像:

1  5
4  6
2  8
4  5
7  8
8  9
3  4
回答1

为此使用labels绘图样式。 这需要三个using说明符:x 值、y 值和放置在给定坐标处的字符串。 所以最简单的命令是:

plot 'abc.dat' using 1:2:(sprintf("(%d, %d)", $1, $2)) with labels notitle

这会将各自的标签以坐标为中心。

以下命令在相应坐标处绘制一个点,并将坐标标签放置在靠近该点的位置:

set offset 1,1,1,1
plot 'abc.dat' using 1:2:(sprintf("(%d, %d)", $1, $2)) with labels point  pt 7 offset char 1,1 notitle

4.6.4 的结果是:

在此处输入图片说明

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何使用整数标记 Gnuplot 4.2 中的 (x,y) 数据点(How to label (x,y) data points in Gnuplot 4.2 with integer numbers)
    问题 我有一个文本文件,其中有 2 列对应于 (x,y) 坐标的数字。 4 1 4 5 1 1 1 5 2.5 3 我如何告诉 gnuplot 绘制这些点并用其对应的行 # 标记每个点? (请记住,我将把它应用到一个包含 100 个点的更大的文件中,所以我正在寻找一种方法来自动完成它,而不是必须创建与行号相对应的第三列数据)。 回答1 您可以在 plot 命令中使用with labels标志。 默认情况下,这会将标签而不是点放置在点所在的位置。 with label采用offset标志(以及您可以传递给set label任何标志),因此您可以在该点旁边set label 。 这是一个示例脚本: #!/usr/bin/env gnuplot reset set terminal pngcairo set output 'test.png' set xr [0:5] set yr [0:6] plot 'data.dat' pt 7, \ 'data.dat' using 1:2:($0+1) with labels offset 1 notitle 产生这个输出:
  • 在 gnuplot 中用多条记录绘制一维二进制数组 (uint8)(Plotting 1D binary array (uint8) with multiple records in gnuplot)
    问题 我知道这个问题类似于 Gnuplot: How to plot multiple time series from a binary format; 但是我已经设置了一个稍微不同的例子,所以希望可以发布(自我回答如下)。 我正在生成这样的二进制数据(参见下面的genbindata.pl Perl 脚本): $ perl genbindata.pl > bin.dat $ du -b bin.dat 234 bin.dat 这个二进制文件bin.dat的格式如下(前两行是基于 1 和基于 0 的索引): >| 1 2 3 4 | 5 6 ... 104 |105 106 ... 204 |205 206 ... 234 >|000 001 002 003 |004 005 ... 103 |104 105 ... 203 |204 205 ... 233 >| WW WW WW WW | XX XX ... XX | YY YY ... YY | ZZ ZZ ... ZZ ... 其中WW是 4 个字节的签名; XX是 100 字节的正弦曲线,值从 0 到 63; YY是 100 字节的余弦值,其值为 64 到 127; ZZ是 30 字节的随机值; 这里考虑一个字节是uint8 。 我想要做的是按bin.dat使用这个bin.dat (也就是说,我不想编写脚本来解析数据
  • 如何在 gnuplot 中标记向量(How to label vector in gnuplot)
    问题 我想知道如何在 gnuplot 中的向量末尾给出标签。 我知道可以在 gnuplot 中使用“set”在某个地方显示某个标签,但我有数百个向量要绘制,我想在其末尾显示每个向量的索引,例如“节点 n” . 因此,我想知道是否可以使用相应的向量在“一步”中显示带有增量索引的标签。 我的操作系统是 Ubuntu 13.04 32 位版本。 感谢您的任何建议! 回答1 假设您有一个包含以下数据的文件(我将其命名为“temp”),其中前两个坐标是原点,后两个坐标是向量的 x 和 y 分量(投影): 0 0 1 1 0 0 1 2 0 0 1 3 0 0 1 4 0 0 1 5 然后您可以使用以下命令执行您想要的操作: set xrange [0:1.2] set yrange [0:6] plot "temp" with vectors, "temp" u 3:4:0 with labels left plot的第一个实例是使用我上面在数据文件中提到的相同约定绘制向量,第二个实例是放置一个坐标 x = 第 3 列和 y = 第 4 列的标签(即,在您的向量),文本 = 第 0 列(给出数据条目的顺序)并将其从这些坐标向左刷新。 它看起来像这样:
  • Gnuplot:使用线条进行条件绘图($ 2 == 15?$ 2:'1/0')(Gnuplot: conditional plotting ($2 == 15 ? $2 : '1/0') with lines)
    问题 我的数据如下所示: 10:15:8:6.06000000: 10:15:2:19.03400000: 10:20:8:63.50600000: 10:20:2:24.71800000: 10:25:8:33.26200000: 10:30:8:508.23400000: 20:15:8:60.06300000: 20:15:2:278.63100000: 20:20:8:561.18000000: 20:20:2:215.46600000: 20:25:8:793.36000000: 20:25:2:2347.52900000: 20:30:8:5124.98700000: 20:30:2:447.41000000: (...) 我想绘制一个“线点”图,在x轴上有$ 1,并用8条不同的线表示($ 2,$ 3)的每种组合,例如:(15,8),(15,2),... 为了进行这种条件绘图,人们提出以下建议: plot 'mydata.dat' using 1:($2==15 && $3==8 ? $4 : 1/0) with linespoints 'v=15, l=8' 但是,gnuplot无法通过这些点画一条线,因为“​​ 1/0”是无效的,并且被插入以替换每个数据点($ 2 == 15 && $ 3 == 8)不成立。 另外,代替“ 1/0”而不是“再次绘制最后一个数据点
  • 如何用C程序绘制数据?(How to plot data by c program?)
    问题 我是一位机械工程师,对C编程的了解有限。 我编写了一些代码以进行仿真,并且我想可视化仿真结果。 目前,我正在使用Dev-C编写代码。 使用fopen和fprintf命令,我生成了一个包含结果的.dat文件。 然后,我打开GNUPLOT程序并导入.dat文件以绘制结果。 这需要时间,我必须等到模拟结束。 有没有将我的绘图仪与Dev-C连接的简便方法,因此我的绘图仪在仿真过程中开始绘制数据? 有图书馆等吗? 回答1 既然您已经知道gnuplot,那么最简单的操作可能就是从程序中调用gnuplot并将数据通过管道传递给它: FILE *gnuplot = popen("gnuplot", "w"); fprintf(gnuplot, "plot '-'\n"); for (i = 0; i < count; i++) fprintf(gnuplot, "%g %g\n", x[i], y[i]); fprintf(gnuplot, "e\n"); fflush(gnuplot); 回答2 好的,当您写出文件时,一种解决方案是在写出文件时仅调用system()并调用gnuplot。 但是,这意味着您应该每次都更改文件名,但是我担心如果这样做,它将看起来不正确,因为您每次都发送少量数据。 http://www.gnu.org/software/libc/manual/html_node
  • gnuplot:如何为不同单位添加y2轴比例(Gnuplot: how to add y2 axis scale for different units)
    问题 我正在从文件中绘制数据。 数据点以公制为单位。 我想在右边以标准单位显示第二个比例尺(y2)。 该文件表示随时间推移的火箭发动机推力。 数据以牛顿为单位。 我想在左边显示牛顿(自然发生),而在右边显示磅力。 转换是一个简单的因子(将N乘以0.2248得到lbf)。 我可以设置y2tics,如果手动设置y2range,它们将显示在右侧。 我不知道该怎么做是将y2range自动设置为y1range *一个因数。 我最终的解决方案是绘制两次,一次在y1上以牛顿为单位,一次在y2上以磅为单位,并使y2的图几乎不可见: plot '-' using 1:($2*0.2248) with dots axes x1y2 lc rgb 'white' notitle, \ '' using 1:2 with lines lc rgb '<color>' title '<title>' 上面的解决方案通常会产生略有不同的y标度:使用autoragne时,gnuplot将范围取整,因此每个轴上的最高刻度是一个整数,当然,不同单位的舍入也不同。 最终,我最终得到了Python代码,该代码在每个图中都找到了最大推力值,然后我将yrange设置为该数字,并将y2range设置为该数字* 0.2248: f.write("set yrange [0:%s]; set y2range[0:%s]\n" %
  • gnuplot - 如何提取 pm3d 插值数据?(gnuplot - How to extract pm3d interpolated data?)
    问题 我正在尝试平滑 gnuplot 图中的一些稀疏数据(格式 x,y,z)。 我需要使用plot和with image选项进行plot ,因为使用pm3d map生成的文件非常大。 我喜欢pm3d map一点是我可以使用interpolate平滑我的数据, interpolate点只考虑相邻点( dgrid3d考虑图中的每个点进行平滑处理)。 因此,我想要做的是set table ,然后将插值设置为我想要的任何内容的pm3d map数据导出,然后使用该数据进行plot ... with image 。 问题是,当我执行以下操作时: set table "out.dat" set pm3d map interpolate 10,10 splot "in.dat" gnuplot 会忽略interpolate选项,只是将与“in.dat”中写入的信息相同的信息写入“out.dat”。 有任何想法吗? 或者,任何以与 pm3d 相同的方式插入 3D 数据的独立代码也很有用。 编辑: 显然,我在工作中使用的是 gnuplot 的“旧”版本:gnuplot 4.2 patchlevel 6,它只接受上述dgrid3d行为。 在家里,我使用的是更新版本(gnuplot 4.4 patchlevel 3),它带有选项set dgrid3d {<rows>{,<cols>}} splines 。
  • gnuplot等高线颜色:设置样式线和设置线型不起作用(gnuplot contour line color: set style line and set linetype not working)
    问题 我正在按照之前的Stackoverflow问题中所述绘制数据:gnuplot 2D极坐标图,带有来自3D数据集的热图-可能吗? 大多数情况下,它对我来说效果很好,我只涉及一些小细节。 其中之一是如何对轮廓线的颜色和线宽进行控制。 在网络上有很多关于使用set style increment user然后通过set style line 1 lc rgb "blue" lw 2等定义用户样式的帖子。从理论上讲,这应该迫使绘图使用新定义的样式来绘制线条。 我尝试了一下,但没有成功。 另外,当我通过gnuplot安装进入帮助页面时,我发现此用法在我的版本中已弃用(4.7补丁程序级别0,2013年7月25日最后修改)。 建议改用set线型,它会为gnuplot的当前调用永久更改gnuplot线型的特征。 终止并重新启动gnuplot将恢复默认线型特征。 接下来,我重新启动gnuplot,重新生成了图,而没有重新定义轮廓线的任何线型或类型。 当我查看绘图时,可以看到线条颜色从青色开始,然后是紫色,然后是蓝色(例如,像线条类型5,4,3或14,13,12等)。 似乎线型在可用样式中向后退。 好吧,我想,我可以改变这些,并忍受奇怪的举止。 但是,在发出多个set linetype命令后,将所有这些线型更改为明显不同的东西(我通过运行test命令验证了这些线型
  • 如何在gnuplot中绘制条形图?(How do you plot bar charts in gnuplot?)
    问题 如何在带有文本标签的gnuplot中绘制条形图? 回答1 简单条形图: set boxwidth 0.5 set style fill solid plot "data.dat" using 1:3:xtic(2) with boxes data.dat: 0 label 100 1 label2 450 2 "bar label" 75 如果您想以不同的方式设置条形,则可以执行以下操作: set style line 1 lc rgb "red" set style line 2 lc rgb "blue" set style fill solid set boxwidth 0.5 plot "data.dat" every ::0::0 using 1:3:xtic(2) with boxes ls 1, \ "data.dat" every ::1::2 using 1:3:xtic(2) with boxes ls 2 如果要为每个条目做多个小节: data.dat: 0 5 0.5 6 1.5 3 2 7 3 8 3.5 1 gnuplot: set xtics ("label" 0.25, "label2" 1.75, "bar label" 3.25,) set boxwidth 0.5 set style fill solid plot 'data.dat'
  • 如何在gnuplot中绘制图的导数?(How can I plot the derivative of a graph in gnuplot?)
    问题 我有一组随时间变化的变量的度量值。 我将这些测量结果保存在一个名为“ results”的文件中,格式为: # time sample 0 5 12 43 234 342 等等... 我可以使用以下命令在gnuplot中轻松绘制: plot "results" 有什么办法来绘制衍生这些测量直接从gnuplot的关于时间(即dsample / DT),或做我必须单独计算导数和情节直接在gnuplot的? 回答1 您可以通过定义一个函数来获取导数来做到这一点: #!/usr/bin/env gnuplot set term pngcairo set output 'test.png' # derivative functions. Return 1/0 for first point, otherwise delta y or (delta y)/(delta x) d(y) = ($0 == 0) ? (y1 = y, 1/0) : (y2 = y1, y1 = y, y1-y2) d2(x,y) = ($0 == 0) ? (x1 = x, y1 = y, 1/0) : (x2 = x1, x1 = x, y2 = y1, y1 = y, (y1-y2)/(x1-x2)) set key bottom left Left reverse # offset for
  • gnuplot具有3D数据集中的热图的2D极坐标图-可能吗?(gnuplot 2D polar plot with heatmap from 3D dataset - possible?)
    问题 我想绘制一个使用笛卡尔坐标在3D中作为曲面完成的图,并在POLAR坐标中以2D在热图中查看它。 这样做的原因是我正在获取该坐标系中某个系统上的数据。 我只找到了一些相关的示例,但是在尝试使其与我的数据一起使用时陷入困境。 我目前正在使用矩阵格式,并且如果可以帮助使图表正常工作,则可以重新格式化数据集。 数据是在扬声器上进行的SPL测量。 将麦克风放置在相距固定距离处(例如,固定半径),并在整个扬声器水平方向上每10度进行一次测量。 根据20Hz至20kHz的频率获得SPL测量值。 我想使用gnuplot创建2D极坐标图。 频率将绘制为半径,扬声器周围的角度将为角度,“高度”将为SPL电平。 这应该生成一个表面,但是,我想创建一个热图pm3d,然后从上方(例如,视图0,0)或以2D图的形式查看。 我还需要添加轮廓线以显示SPL的间隔,并将其叠加在热图上。 我在这里找到了一些类似于笛卡尔坐标的东西:http://gnuplot-tricks.blogspot.com/2009/07/maps-contour-plots-with-labels.html当我尝试将极坐标用于最终的2D图时,我收到一条错误消息,极坐标图不支持“带有图像”选项。 有人可以尝试或确认吗? 我已经能够使用Splot和正上方的视图(设置视图0.0)在3D中将极坐标数据绘制为热图+轮廓线。
  • gnuplot或八度的3D直方图(3D histogram with gnuplot or octave)
    问题 我想绘制3D直方图(使用gnuplot或倍频程)以表示我的数据。 可以说我有以下格式的数据文件: 2 3 4 8 4 10 5 6 7 我想在集合[1,3] x [1,3]中绘制九个彩色条(矩阵的大小),以使条的颜色与条的高度成比例。 我怎样才能做到这一点? 回答1 下面是我实现的功能,该功能部分(作为部分)替代了bar3。 在我的版本中,通过创建补丁图形对象来渲染条形图:我们构建顶点坐标矩阵和连接这些顶点的面列表。 这个想法是首先构建一个单独的“ 3d立方体”作为模板,然后将其复制为尽可能多的条形。 每个条根据其位置和高度进行移动和缩放。 顶点/面矩阵以矢量化方式构造(看起来像马,没有循环!),结果是为所有条形绘制了一个面片对象,而不是每个条形上有多个面片(这在图形方面更有效)表现)。 该函数可能已经通过指定连接顶点坐标那种形式的多边形,通过使用实现XData , YData , ZData和CData性质,而不是Vertices和Faces性能。 实际上,这是bar3内部执行的操作。 这种方法通常需要更大的数据来定义补丁(因为我们无法在补丁面上共享点,尽管我在实现中并不在意)。 这是一篇相关的文章,在这里我试图解释bar3构造的数据的结构。 my_bar3.m function pp = my_bar3(M, width) % MY_BAR3 3D bar graph.
  • 如何在 gnuplot 中对箱线图异常值进行分组(How to group boxplot outliers in gnuplot)
    问题 我有大量数据点。 我尝试用箱线图绘制它们,但一些异常值是完全相同的值,并且它们在一条线上表示。 我找到了如何在 gnuplot boxplot 中设置异常值之间的水平距离,但这并没有太大帮助,因为这显然是不可能的。 是否可以将异常值组合在一起,打印一个点,然后在它旁边的括号中打印一个数字来表示有多少个点? 我认为这会使其在图表中更具可读性。 有关信息,我有一个 x 值的三个箱线图,在一张图中乘以六个。 我正在使用 gnuplot 5 并且已经使用了点大小,它不再减少距离。 我希望你能帮忙! 编辑: set terminal pdf set output 'dat.pdf' file0 = 'dat1.dat' file1 = 'dat2.dat' file2 = 'dat3.dat' set pointsize 0.2 set notitle set xlabel 'X' set ylabel 'Y' header = system('head -1 '.file0); N = words(header) set xtics ('' 1) set for [i=1:N] xtics add (word(header, i) i) set style data boxplot plot file0 using (1-0.25):1:(0.2) with boxplot lw 2
  • Gnuplot直方图簇(条形图),每个类别一行(Gnuplot Histogram Cluster (Bar Chart) with One Line per Category)
    问题 直方图簇/条形图 我正在尝试使用gnuplot从此数据文件中生成以下直方图群集,其中每个类别每年在数据文件中以单独的一行表示: # datafile year category num_of_events 2011 "Category 1" 213 2011 "Category 2" 240 2011 "Category 3" 220 2012 "Category 1" 222 2012 "Category 2" 238 ... 但是我不知道如何用每个类别一行。 如果有人知道如何使用gnuplot做到这一点,我将感到非常高兴。 堆积直方图簇/堆积条形图 更好的是像下面这样的堆叠直方图群集,其中堆叠的子类别由数据文件中的单独列表示: # datafile year category num_of_events_for_A num_of_events_for_B 2011 "Category 1" 213 30 2011 "Category 2" 240 28 2011 "Category 3" 220 25 2012 "Category 1" 222 13 2012 "Category 2" 238 42 ... 在此先多谢! 回答1 经过研究,我想出了两种不同的解决方案。 必需:拆分数据文件 两种解决方案都需要将数据文件拆分为按列分类的几个文件。 因此
  • 非均匀网格上具有Gnuplot的热图(Heatmap with Gnuplot on a non-uniform grid)
    问题 我想使用基于非均匀网格的gnuplot创建一个热图,这意味着我的x轴容器的宽度不一样,而且我不知道该怎么做,因为当我用for绘制数据时例如“带有图像”,我得到大小一致的盒子,这些盒子根本不对应于我的坐标(因为“图像”将数据视为矩阵,就像我猜的那样)。 因此,我想找到一种方法来获取不均匀的盒子,这些盒子也位于笛卡尔平面上的正确位置。 我的数据如下所示: 1 1 0.2 1 2 0.8 1 3 0.1 1 4 0.2 2 1 0.7 2 2 0.2 2 3 0.3 2 4 0.1 5 1 0.2 5 2 0.4 5 3 0.1 5 4 0.9 7 1 0.3 7 2 0.2 7 3 0.9 7 4 0.6 如果我在Gnuplot上运行此命令 set xrange [1:10] p 'mydata.dat' with image 我得到一个具有16个框的图像,这些框具有相同的宽度和高度(显然,我在Stackoverflow上没有足够的“声誉”来发布图像,否则,我会这样做),但是理想情况下,我希望这些框具有不同的宽度并且是在飞机上的正确位置。 例如,第一个框的范围是1到2,第二个框的范围是2到5,第三个框的范围是5到7,最后一个框的范围是7到10(这就是我写set xrange [1:10] ) 。 有人可以帮我吗? 非常感谢你! 回答1 最简单的(也许是唯一可行的
  • GNUPLOT:点集的2d直方图(GNUPLOT: 2d histogram from set of points)
    问题 我对它们的权重有几点看法: #x y w 0.111342 0.478917 0.232487 0.398107 1.79559 0.221714 0.200731 2.58651 0.0776068 0.0967412 1.49904 0.0645355 6.17638 8.63101 0.715604 0.306128 3.10917 0.0984595 0.340707 3.19344 0.10669 7.18627 8.59859 0.835751 8.56 9.63894 0.888065 5.14272 6.86074 0.749587 0.747202 3.812 0.196013 8.71891 10.1355 0.860232 0.346714 1.45895 0.237647 5.21932 8.84491 0.590094 9.42138 12.2082 0.771725 0.215627 2.42317 0.0889856 如何用颜色条绘制漂亮的2D直方图图像? 我找到了不错的密度图描述,但我不会通过python进行查找。 我有办法只使用gnuplot脚本吗? 回答1 最好使用外部直方图工具,但是您可以通过以下方法在gnuplot中实现类似的功能: set pm3d at b # draw on bottom, not as 3d surface
  • 使用gnuplot同时绘制目录中的所有文件?(Plot all files in a directory simultanously with gnuplot?)
    问题 我想做类似这个问题的事情:gnuplot:在单个图形中绘制来自多个输入文件的数据。 我想同时绘制目录中的所有文件,而不必显式地写入它们的名称。 所有文件的列号均相同。 我能做什么? plot for [file in *] file u 3:2不起作用。 另外,我不希望每个文件都有不同的图例。 所有文件中的所有点都应被视为相同,就好像它们都来自单个文件一样。 回答1 您可以尝试类似的方法: a=system('a=`tempfile`;cat *.dat > $a;echo "$a"') plot a u 3:2 这使用命令行tempfile命令来创建安全,唯一且可抛弃的临时文件。 它将所有数据文件混搭到该文件中。 然后,它回显文件的名称,以便gnuplot可以检索它。 然后,Gnuplot绘制事物。 担心标题行? 试试这个: a=system('a=`tempfile`;cat *.dat | grep "^\s*[0-9]" > $a;echo "$a"') 正则表达式^\s*[0-9]将匹配所有以任意数量的空格开头且后跟数字的行。 回答2 作为乔纳坦回答的替代方案,我会选择 FILES = system("ls -1 *.dat") plot for [data in FILES] data u 1:2 w p pt 1 lt rgb 'black' notitle
  • gnuplot:在单个图中绘制来自多个输入文件的数据(gnuplot : plotting data from multiple input files in a single graph)
    问题 我正在尝试使用gnuplot绘制图形。 我有六个文本文件。 每个文本文件包含两列。 第一列表示以秒为单位的时间(浮点数)。 第二个是序列号。 我想在所有六个文件的单个图形中绘制时间与序列号的图形。 我正在使用此文件来做到这一点。 set terminal png set output 'akamai.png' set xdata time set timefmt "%S" set xlabel "time" set autoscale set ylabel "highest seq number" set format y "%s" set title "seq number over time" set key reverse Left outside set grid set style data linespoints plot "print_1012720" using 1:2 title "Flow 1", \ plot "print_1058167" using 1:2 title "Flow 2", \ plot "print_193548" using 1:2 title "Flow 3", \ plot "print_401125" using 1:2 title "Flow 4", \ plot "print_401275" using 1:2 title
  • gnuplot条形图中的不同彩色条?(Different coloured bars in gnuplot bar chart?)
    问题 我有一个非常简单的数据集: Critical 2 High 18 Medium 5 Low 14 在gnuplot中从该数据集创建条形图很容易,但是所有条形都是相同的颜色。 我希望它具有“严重”为黑色,“高”为红色等的功能,但是似乎几乎没有任何在线教程可以做到这一点。 谁能指出我正确的方向? 回答1 set xrange [-.5:3.5] set yrange [0:] set style fill solid plot "<sed 'G;G' test.dat" i 0 u (column(-2)):2:xtic(1) w boxes ti "Critical" lc rgb "black",\ "<sed 'G;G' test.dat" i 1 u (column(-2)):2:xtic(1) w boxes ti "High" lc rgb "red" ,\ "<sed 'G;G' test.dat" i 2 u (column(-2)):2:xtic(1) w boxes ti "Medium" lc rgb "green",\ "<sed 'G;G' test.dat" i 3 u (column(-2)):2:xtic(1) w boxes ti "Low" lc rgb "blue" 这会占用sed和三倍的文件空间,以便gnuplot将每一行视为不同的数据集
  • 如何在Gnuplot的一个文件中绘制多个带有标题的数据集?(How to plot several datasets with titles from one file in Gnuplot?)
    问题 假设我有一个看起来像这样的文件: "p = 0.1" 1 1 3 3 4 1 "p = 0.2" 1 3 2 2 5 2 是否可以使Gnuplot将这两个数据集绘制在一个图中,并在每个数据集的第一行给出标题? 回答1 绝对有可能,并且您的数据文件已经是正确的格式。 您正在寻找的功能内置在columnheader(N) ,该功能读取第N列顶部的数据并将其用作绘图标题: plot 'test.dat' i 0 u 1:2 w lines title columnheader(1),\ 'test.dat' i 1 u 1:2 w lines title columnheader(1) 可以使用迭代压缩: plot for [IDX=0:1] 'test.dat' i IDX u 1:2 w lines title columnheader(1) 回答2 这是Bruce_Warrior和Ciro Santilli的答案,但没有中间stats : # plot.gpi datafile = ARG1 plot for [i=0:*] datafile index i using 1:2\ with lines title columnheader(1) for循环可以直接遍历文件中的所有数据集。 它工作在gnuplot的5.0.5,但我不知道什么时候for获得这种能力。 它记录在5