这是我的第一篇文章,我对C++和一般编译都很新手.
我正在编写一个程序,需要绘制一些图形.该程序创建一个.dat文件,然后我应该打开gnuplot并写入' .dat'.没关系.
有没有办法让gnuplot自动打开并向我展示我需要的情节?我应该在代码中使用一些system()函数来调用gnuplot但是如何让他绘制我需要的东西呢?
对不起我的非完美英语:s
无论如何,感谢您的关注!
我试图将管道接口用于gnuplot(标准的一个gnuplot_i.{cpp,hpp}),以便生成在C++编写的另一个程序中不断变化的值的实时显示.这项工作正常,但我想知道是否有人有任何改进建议.
该实现包含将单个矢量和2个矢量绘制为2D图的便利方法.它是通过对mktemp函数的标准库调用写出临时文件,然后将其用作gnuplot plot调用的输入来实现的.这会生成太多临时文件,并且当绘图上的更新速率很高(可能IO限制在某一点)时似乎不能正常工作.我决定在绘图调用中使用' - '伪文件,然后将向量直接发送到管道(以一行"e"结束).这效果更好,但仍然不是很好.
有没有雨衣的方式做什么,我试图做的比不断再生的情节,当值发生了变化?多久是安全更新与新的信息的情节?或者,也许有一种更简单的方法来实现我想要做的事情?
我本身没有"要求".浮石的意思是,在使用gnuplot时,可能有一种更优雅的方法来做我正在尝试的东西.虽然优雅是主观的,但我发现我目前采用的方法特别不优雅.我所说的安全之处在于,是否有人知道在采用所述方法的IO问题(例如,延迟,显示器锁定等)的更新速率.
我想避免使用工具包,原因如下(至少我的短名单).
但是,如果您对C/C++绘图库有任何特别的建议,考虑到上面的列表似乎很合适,我总是对建议感兴趣(警告:我已经找了很多东西找到它们).
有人知道如何在不改变绘图命令顺序的情况下改变键内的顺序吗?默认情况下,密钥与各个图的标题具有相同的顺序.
例如:我首先绘制带有fillcu的错误带,然后将平均值绘制为实线.现在我有错误带标题在顶部(在键中),然后是实线的标题.但我想反过来说.
最好的祝愿
我正在尝试使用以下数据创建堆叠直方图:
8.01 1 5 1
8.02 3 5 1
8.03 4 4 1
8.04 3 4 1
8.05 1 2 1
Run Code Online (Sandbox Code Playgroud)
我试图改编第四个例子中的脚本,现在我正在使用它:
set title "Test"
set key invert reverse Left outside
set key autotitle columnheader
set style data histogram
set style histogram rowstacked
set style fill solid border -1
set boxwidth 0.75
plot 'test.dat' using 2:xtic(1), '' using 2 title 'Col1', '' using 3 title 'Col2', '' using 4 title 'Col3'
Run Code Online (Sandbox Code Playgroud)
我复制的部分我不确定using 2:xtic(1).我知道这使得它使用xtic值作为第一列,这就是我想要的.但我不知道这using 2部分代表什么.这是脚本生成的屏幕截图: …
根据各种因素,我可能没有一个或多个数据文件,在预定义的gnuplot绘图指令中引用,不存在.在这种情况下,我得到"警告:跳过不可读的文件",取消其余的说明.
有什么方法可以让gnuplot跳过任何丢失的数据文件并绘制所有现有的文件?
Gnuplot提供了许多点样式,可用于散点图,例如十字形,星形,正方形,圆形等.可以使用该命令演示可用的点类型test.
但是,对于特定的应用程序,我需要不同的符号,我需要显示这些符号的图例条目.
特别是,我需要超过四个符号,可以在轮廓和填充状态下绘制(例如,指向左或右的三角形,平行四边形或非方形矩形).
有许多方法可以使用其他形状(每种形状都对终端有一些要求,例如unicode支持):
set label '?' at 3,4对于每个点,其中□可以通过任何Unicode字符来代替,如◁,▶,▭,▮等)plot ... with labels并提供unicode字符作为标签所有这些方法的问题在于我无法获得包括符号在内的正确的图例(关键)条目.
我考虑过自己策划这个传奇,但有两个原因让我觉得这不可行:
using linespoints常规的Gnuplot点类型一样),它们都必须在图例中显示.我以编程方式生成Gnuplot输入文件,因此明确列出所有点(如set label上面提到的方法)或需要一些计算的方法是可以的.
目前,我做了类似以下的事情:
set term png
set output 'file.png'
Run Code Online (Sandbox Code Playgroud)
但是脚本中的硬编码文件是非常不灵活的.有没有办法告诉gnuplot输出图像文件到stdout,所以我可以在需要的地方重定向它的输出?
我一直在尝试将3个图形叠加在画布上的多图布局中,并且比例为2:3(宽高比).
set terminal postscript eps enhanced "Helvetica" 24 color
set output "data.eps"
set timefmt "%s"
#set size 1.0,1.5
#set bmargin 2
#set tmargin 2
set size 1.0,1.5
set multiplot layout 3,1
set size 1.0,0.5
set tmargin 2
set bmargin 0
set ylabel 'Distance'
set format x ""
set ytics nomirror font "Helvetica,10"
set key top
plot "trace1.dat" using 1:3 axes x1y1 title "distances" with lines lw 2 lc rgb 'blue'
set size 1.0,0.5
set bmargin 0
set tmargin 0
set …Run Code Online (Sandbox Code Playgroud) 例:
set title "title"
plot x
Run Code Online (Sandbox Code Playgroud)
这将绘制一个顶部带有标题的图表.我想在图表下移动标题.我该怎么办?更多,多色时同样的问题怎么样.我想为每个图下的每个小图移动标题.请注意,标题不是将放置在按键中的图表中的标题.非常感谢!
我对gnuplot边距有点困惑.首先,我不知道这些东西指向的单位.它们是指向画布坐标还是它们是画布坐标的一部分.它们在gnuplot模式和多时隙模式下的行为是否相同?
在多时隙模式下绘制一些数据时出现问题.我正在密切关注屏幕(wtx终端).让我们说我正在搞糟糕的事情 - 我从画布上得到了阴谋,或者是非常小的难以理解的情节.
没有边距,第一个绘图是在画布顶部齐平,所以我自然想把它向下推.
有人可以解释gnuplot边距是如何工作的,以及它们在多点模式下的行为是否相同.