我知道这应该很简单,但我找不到类似的例子.
我需要以不同方式绘制不同范围的数据文件,但需要在同一图表上.
例如,假设我的数据文件表示具有x和y值的函数.我想使用类似线条的样式绘制前N个值,然后使用不同的样式(如点)绘制下一个M值.
我以为我需要一个类似于此的绘图命令:
plot [1:5] "my.data" using 1:2 with lines, [6:12] using 1:2 with points, [13:19] using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)
基本上我想区分功能的不同区域.
有任何想法吗?我很抱歉,如果这听起来像是在漫无边际,但我很难过.
提前致谢!
我无法在Octave中绘制一个正方形.我不能强制同等比例的轴,所以我得到一个矩形代替:

以下试验不起作用:
x = [0, 1, 1, 0, 0]';
y = [0, 0, 1, 1, 0];
plot(x, y), axis equal, axis([-1,2, -1,2])
% figure('Position', [10,10,100,100]); %[startx,starty,width,height]
% plot(x, y)
Run Code Online (Sandbox Code Playgroud)
可能我需要指定一个固定的窗口大小和相同的缩放轴.当第一个这样的显示窗口显示正确的方格时,我会感到满意.奢侈的解决方案会使窗口(或其内容)不能以交互方式调整大小.
备注:
我在bash上做一些脚本用gnuplot绘制数据.但它不起作用.
我有一个程序将数据抛出到命令行.我在文件上收集数据,然后我循环这个过程以获得所需的结果.说我有这个脚本
N = 10
./program.exe > data_$N.dat # Creating the data to be plotted
for ((i = 0 ; i<1 ; i++)) do # Dummy loop to throw all together to gnuplot
echo "set size square"
echo "set xrange[-$N-1:$N+1]; set yrange[-$N-1:$N+1];"
echo "plot '-' using 1:2"
for((j = 0 ; j <= 9 ; j++)) do
# Throwing the data to gnuplot
echo "cat data_$N.dat"
# Updating the file and overwriting on it
echo "cat data_$N.dat | xargs ./program.exe …Run Code Online (Sandbox Code Playgroud) 我有一个数据文件,我想用gnuplot绘图.但是,对于y轴,我希望gnuplot忽略某个值以下的所有点.有没有一种简单的方法可以做到这一点,尤其是数据文件庞大?
在gnuplot中,我绘制如下图:
gnuplot> set title "Performance analysis" font ", 16"
gnuplot> set xlabel "Array size" font ", 14"
gnuplot> set ylabel "Time, milliseconds" font ", 14"
gnuplot> set xrange [0:25]
gnuplot> set yrange [0:6300]
gnuplot> set xtics (5, 9, 11, 13, 15, 17, 19, 21, 23)
gnuplot> set ytics (88, 296, 433, 835, 1067, 1516, 2592, 3920, 6214)
gnuplot> set style line 1 linecolor rgb "blue"
gnuplot> plot "file.dat" using 1:2 title "Graph" with lines
Run Code Online (Sandbox Code Playgroud)
它很好,但我的图形的线条颜色仍然是红色(默认),请你帮我设置为蓝色.
我的文件中包含CDF的数据,如下所示:
0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
... ...
... ...
0.847 0.999464094319
0.862 1.0
Run Code Online (Sandbox Code Playgroud)
第一列是X轴值,第二列是Y轴上的CDF值。我将线条样式设置如下:
set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75 # --- blue
Run Code Online (Sandbox Code Playgroud)
然后用以下内容绘制线:
plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1
Run Code Online (Sandbox Code Playgroud)
一切正常,问题似乎是我的CDF文件很大(大约250行),Gnuplot会为每个数据点绘制标记/点(在这种情况下为圆)。由于标记的浓度过高,因此这导致一条非常“密集”的线,因此下面的示例图片中显示了下面的线几乎不可见:

我如何有选择地绘制标记,以便代替在所有数据点上绘制它们,而在每50个数据点后绘制它们,而不必减少数据点的数量(我相信这是"every n"plot命令的工作)。我的数据文件还是减小标记大小?
我正在使用gnuplot做大量的情节.由于数据范围(对于x和y轴)对于每个图都是可变的,我需要让gnuplot自动设置范围和抽搐.但是,我需要在绘图下放置一个定义的网格,水平线每个1/8单位,垂直线1/4单位.当我让gnuplot决定在哪里放置抽搐时,我不知道两个抽搐之间的距离(以单位为单位)因此,我不知道我应该在m {x | y} tics中进行的细分数量期望的输出.
例如:如果我每两个单位都有一个ytic,我需要"设置mytics 8".如果我每个单位都有一个ytic,我需要"设置mytics 4".
那么,有什么办法可以获得自动放置抽搐之间的距离?甚至是绘制抽搐的数量?
我们可以使用以下方法绘制箭头:
set arrow 1 from 0,-5 to 0,5
Run Code Online (Sandbox Code Playgroud)
但是,from和to位置使用的是x1y1轴。
如何让位置使用x1y2轴?我的y2轴不同于y1轴。
我想要一个与每个绘制线无关的gnuplot中的键,而是代表每一行的规格.
基本上我想要的是键中的三条彩色线代表我正在使用的三种算法.然后用三种形状来表示每种算法的误差界限.
所以我的密钥看起来像这样:
红线 - alg 1
蓝线 - alg 2
绿线 - alg 3
三角形 - 5%
圈 - 3%
平方 - 1%
我的图表中有9行是颜色和形状的组合,但我不希望我的图例有所有9行,只是代表性的规格.
我希望这是有道理的.如果您需要更多说明,请与我们联系.
我没有找到很多资源来制作一个独立于我的绘制线的关键,所以我只得到为每一行设置'notitle'.
我在VBA的范围内运行Gnuplot,效果出奇的好.我可以使用GNUPLOT和Word VBA生成一本大约一百个图表的书.(使用Excel图表,我可能得到大约四个)
有一个小问题 - 在VBA下运行时,STDERR会消失,或者没有被创建.没有诊断.
鉴于以下小型GNUPLOT脚本,
set key bmargin left horizontal Right noreverse enhanced autotitle box lt black linewidth 1.000 dashtype solid
set samples 800, 800
set title "Simple Plots"
set title font ",20" norotate
DEBUG_TERM_HTIC = 119
DEBUG_TERM_VTIC = 119
plot [-30:20] sin(x*20)*atan(x)
Run Code Online (Sandbox Code Playgroud)
我的VBA代码将其写入临时文件并尝试运行它.VBA生成
"C:\temp\Gnuplot\bin\gnuplot.exe" C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt 2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"
Run Code Online (Sandbox Code Playgroud)
然后使用Windows Shell运行它,如下所示调用:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Run Code Online (Sandbox Code Playgroud)
然后
wsh.Run x, 0, True ' x contains the generated GNUPLOT expression
Run Code Online (Sandbox Code Playgroud)
GNUPLOT执行完美.
在GNUPLOT表达式中,第一项是GNUPLOT程序的位置,在我的系统上恰好是"C:\temp\Gnuplot\bin\gnuplot.exe".第二个文件是在Microsoft官方位置生成的临时文件C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt.最后是STDERR的位置,2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"其中2>表示这是STDERR,而不是正常输出STDOUT.
现在假设我在GNUPLOT源中引入了一个故意的错误,我希望写一个包含类似内容的错误文件
scooby …Run Code Online (Sandbox Code Playgroud)