这是我的第一篇文章,我对C++和一般编译都很新手.
我正在编写一个程序,需要绘制一些图形.该程序创建一个.dat文件,然后我应该打开gnuplot并写入' .dat'.没关系.
有没有办法让gnuplot自动打开并向我展示我需要的情节?我应该在代码中使用一些system()函数来调用gnuplot但是如何让他绘制我需要的东西呢?
对不起我的非完美英语:s
无论如何,感谢您的关注!
我一直在尝试将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) 我有一系列性能测试,我想以图表的形式显示.我有一组测试(大约10个),我在一组组件(目前为3)上运行,并获得吞吐量结果.
Y轴将是测试的吞吐量结果,X轴应该具有测试的缩写名称,以及我正在测试的各种组件的结果.因此,对于每个X标签(例如,retrieve20Items,store20Items),在它上面将有3个不同的结果,一个用于我正在测试的三个组件中的每一个,每个组件在图例中进行颜色编码和引用.
这是非数字x轴,我可以使用gnuplot吗?这是在Linux平台上完成的,因此仅限Windows的工具对我不起作用.
是否有可能在Gnuplot中创建动态图?我需要的是,由于数据是通过某个循环生成的,因此我将使用gnuplot在xy轴上放置一些标记,保留较旧的标记.因此,不知怎的,我将能够观察数据的演变,而不仅仅是看到最终的批量结果.
我特别想要的是等同于MATLAB中的"drawow"命令.
虽然不完全相关,但现在我使用常见的lisp来生成循环和cgn中的数据,以便使用gnuplot在lisp中绘制.(我可以使用cgn利用gnuplot在普通lisp中以批量形式绘制数据)
非常感谢您的关注.
编辑:我为此目的在共同的lisp中编写了一个代码.你可以在这里查看:
使用Common Lisp和Gnuplot从emacs顺序绘制数据
这个线程更通用,并在gnuplot中请求动态绘图.欢迎任何建议.
我正在尝试使用gnuplot绘制两个数据集.它们都是(x,y,z)三元组.它们没有排列在网格上.我想使用dgrid3d和绘制其中一个pm3d.最重要的是,我想覆盖其他数据集,但只是分散点.
举一个更具体的例子:我试图绘制一个圆柱接近曲面的效果.我想绘制表面的响应,这dgrid3d就是派上用场的地方.最重要的是,我想绘制圆柱体的位置,并将其圆周作为点.
我用了:
set dgrid3d 100,100,4
set pm3d
splot "dataset1" with pm3d, "dataset2" with dots
Run Code Online (Sandbox Code Playgroud)
数据集大约有100x100点,排列在近广场上,因此100,100最适合这里.无论我如何绘制第二个数据集,它总是最终成为与圆柱相同尺寸的正方形,而不是一个漂亮的圆.当我关闭dgrid3d时,我可以自己绘制第二个数据集,结果是圆柱体的圆周.
所以我的问题是:是否可以使用两个数据集绘制3D图形,一个使用dgrid3d而另一个不使用它?
我正在尝试\odot在gnuplot(4.6.0)pdf终端中设置LaTeX 符号.这个的确切语法是什么?
在gnuplot的常见问题给出了一些线索,但我应该输入{/Symbol \2299},或者{/utf8 \2299},或者一些其他的变化\,/,#等?或者我应该这样做set encoding utf8?直接粘贴符号似乎不起作用.
我应该使用pdf或pdfcairo作为终端吗?后者以无法忍受的方式影响我的情节.
我想在一个图中绘制多个数据集:
plot "data1a.txt", "data1b.txt", "data1c.txt", "data2.txt"
Run Code Online (Sandbox Code Playgroud)
我想要两个具有不同范围的y轴.
yrange=[0:10]
y2range=[-10:10]
Run Code Online (Sandbox Code Playgroud)
如果您只有两个数据集,则可以在gnuplot上轻松完成.第一个数据集使用yrange(左侧有轴),第二个数据集使用y2range(右侧有轴).
现在问题就在这里.我想绘制的数据集data1a.txt,data1b.txt并data1c.txt使用yrange和data2.txt使用y2range.如何在具有两个y轴的单个图形上执行此操作?
我需要从.csv文件和空白分隔文件中绘制数据.两组数据都需要出现在同一个图上.
data1.dat
#t y
1 1
2 1
3 1
Run Code Online (Sandbox Code Playgroud)
和
data2.csv
#t,y
1,2
2,2
3,2
Run Code Online (Sandbox Code Playgroud)
通常,如果两者都是.csv集,我会做以下事情:
set datafile separator ','
plot 'data1.csv' using 1:2,'data2.csv' using 1:2
Run Code Online (Sandbox Code Playgroud)
有没有办法在plot语句中包含分隔字符的设置?
plot 'data1.dat' using 1:2,'data2.csv' using datafile separator ',' using 1:2
Run Code Online (Sandbox Code Playgroud)
以上不起作用,我尝试了上述代码的许多不同变体....我没有运气.

我在gnuplot中绘制了这张表.如你所见,钥匙应分为两部分.前4个键应保留在原位,但其余4个键应向下移动,以便它们不会交叉数据.
如何以这种方式拆分钥匙?
以下是我用于将数据(x和y坐标)写入文件的代码.
void display(){
fstream out;
outfile.open("Co_ordinates.txt",fstream::out | fstream::trunc);
outfile.precision(6);
for(int i=0;i<3000; i++){
outfile<<fixed<<x[i]<<" "<<fixed<<y[i]<<endl;
}
out.close();
}
Run Code Online (Sandbox Code Playgroud)
我想使用上面文件"Co_ordinates.txt"中的x和y坐标来绘制图形我已经从https://code.google.com/p/gnuplot-cpp/source/添加了gnuplot实用程序"gnuplot_i.hpp" browse/trunk/gnuplot_i.hpp.
我使用了gnuplot_i.hpp中定义的以下函数
/// plot x,y pairs: x y
/// from file
Gnuplot& plotfile_xy(const std::string &filename,
const unsigned int column_x = 1,
const unsigned int column_y = 2,
const std::string &title = "");
Run Code Online (Sandbox Code Playgroud)
我添加了以下代码来绘制图形
const string s="Co_ordinates.txt";
Gnuplot& plotfile_xy(&s,1,2,'Grid');
Run Code Online (Sandbox Code Playgroud)
但是得到以下错误
错误:表达式列表在初始化程序[-fpermissive] |中被视为复合表达式 错误:从'int'|类型的右值开始,无效初始化'Gnuplot&'类型的非const引用
我已经尝试了几种形式的上述代码..但是得到错误.请提出一些解决方案..