gnuplot中的原点(0,0点)始终位于左下角,y值向上递增.
有没有办法将原点的方向修改为左上角,y轴从上到下递增,就像在成像中常用的坐标系一样?我正在使用gnuplot来绘制数据文件.
任何的想法?提前致谢.
我怎样才能在多行甚至列中显示gnuplot标题.事实上,我有8个头衔,而且我用这个:
set key below
Run Code Online (Sandbox Code Playgroud)
所以每个都显示在一个单独的行中.所以这个数字变得拥挤.
我希望将gnuplot png文件无缝混合到网站的背景页面颜色中。为具有特定rgb颜色规格的图设置背景矩形,并为html页面设置相同的rgb效果很好。
彩色gnuplot矩形:
set object 1 rectangle from screen 0,0 to screen 1,1 behind fc rgb "#d0d0e0" lw 0
HTML页面背景颜色:
<body text="#000000" bgcolor="#D0D0E0" link="#0000EE" vlink="#551A8B" alink="#FF0000">
现在,我想摆脱绘图周围的细黑线(而不是轴,而不是边框周围的线),以便它完美地融合到背景中。
我试图lw 0如上或设置矩形风格noborder或者border -1,但没有作品。我应该提到这是在gnuplot 4.6 patchlevel 0上。
您可以在我的页面上看到此问题:
http://drgert.dyndns.ws:8000/bmp085/bmp085.php
感谢您的帮助,格特
这是我的代码:
set term pdfcairo enhanced dashed size 5,3;
set output "plot.pdf";
f(x,y)=sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x)
set size square
set xrange [-5:5]
set yrange [-5:5]
set contour base
set cntrparam level incremental -3, 0.5, 3
set palette rgbformulae 33,13,10
set pm3d map
set isosample 250, 250
unset key
set lmargin at screen 0.1;
set rmargin at screen 0.95;
set bmargin at screen 0.2;
set tmargin at screen 0.95;
splot f(x,y) with pm3d
Run Code Online (Sandbox Code Playgroud)
这是相应的情节:

情节周围有白色边缘.如何通过编辑gnuplot代码来消除这些白色边距?
我有一组点"数据"定义了一条曲线,我希望用贝塞尔曲线绘制.所以我想在某些x值对之间填充该曲线下面的区域.如果我只有一对x值,那并不困难,因为我定义了一组新数据并用fillcu绘制它.例:

问题是我想在同一个情节中多次这样做.
编辑:最小的工作示例:
#!/usr/bin/gnuplot
set terminal wxt enhanced font 'Verdana,12'
set style fill transparent solid 0.35 noborder
plot 'data' using 1:2 smooth sbezier with lines ls 1
pause -1
Run Code Online (Sandbox Code Playgroud)
"数据"的结构是:
x_point y_point
Run Code Online (Sandbox Code Playgroud)
而且我意识到我的问题是,实际上我甚至不能填充一条曲线,它似乎被填充,因为那里的斜率几乎是恒定的.
看来此命令无法更改箭头的颜色
set arrow from 22,1590 to 523,1090 lw 3 back lc rgb "blue" filled
Run Code Online (Sandbox Code Playgroud)
但是我明白了
duplicated arguments in style specification
Run Code Online (Sandbox Code Playgroud)
它指向的开始filled。
为什么?
我得到了这样的格式的数据文件:
# begin
16 1
15 2
14 3
13 4
12 5
11 6
Run Code Online (Sandbox Code Playgroud)
现在,我想使用gnuplot在点之间画一条线:
(1, (16/16)) (2, (16/15)) (3, (16/14)) ... (6, (16/11))
Run Code Online (Sandbox Code Playgroud)
如您所见,x轴的范围是[1:6],Y轴对应于从第一列的第一行中的数字(即本例中的16)获得的值除以在第一行中的数字第一列。
问题是我不知道如何在第一行(16)的第一列中获取数字的值,因此我可以执行以下操作
plot "datafile" using 2:(16/$1) with linespoints
Run Code Online (Sandbox Code Playgroud)
我已经做了很多关于如何实现这一目标的搜索,但是没有运气。gnuplot似乎没有提供一些灵活的方法来允许任意数据选择。任何想法如何做到这一点?也许我只是陷入了一个不太常见的问题?
感谢您的帮助。
我无法找到我面临的以下问题的解决方案.关于多轴的所有SO问题都谈论线图,但我正在寻找直方图.
在y-range该酒吧是不同的,所以酒吧一组都没有真正看到,因为规模.这是数据:
Metric A B
M1 0.613416301 0.543734744
M2 0.000195961 0.000100190
这是MWE:
reset
set term postscript eps size 5.5,4.5 enhanced color font 'Arial-Bold' 25
set out 'histplot.eps'
set key right
set style histogram cluster gap 2
set style data histograms
set style fill pattern 1.00 border
set y2range [0.0001:0.0002]
plot 'histplot.dat' using 2 ti col, '' u 3:xticlabels(1) ti col
quit
这是样本输出(没有看到M2上的一组条形):
我更喜欢的是有一个第二个y轴(在图的右侧),其范围适合我的数据文件的第二行.这可能吗?任何帮助是极大的赞赏.
我是Gnuplot的忠实粉丝,现在我想将fit-function用于时间序列.
我的数据集如下:
1.000000 1.000000 0.999795 0.000000 0.000000 0.421927 0.654222 -25.127700 1.000000 1994-08-12
1.000000 2.000000 0.046723 -0.227587 -0.689491 0.328387 1.000000 0.000000 1.000000 1994-08-12
2.000000 1.000000 0.945762 0.000000 0.000000 0.400038 0.582360 -8.624480 1.000000 1995-04-19
2.000000 2.000000 0.060228 -0.056367 -0.680224 0.551019 1.000000 0.000000 1.000000 1995-04-19
3.000000 1.000000 1.016430 0.000000 0.000000 0.574478 0.489638 -3.286880 1.000000 1995-07-15
Run Code Online (Sandbox Code Playgroud)
我的拟合脚本:
set timefmt "%Y-%m-%d"
set xdata time
set format x "%Y-%m-%d"
f(x)=a+b*x
fit f(x) "model_fit.dat" u 10:($2==2?$4:1/0) via a,b
Run Code Online (Sandbox Code Playgroud)
所以我对时间数据进行了条件拟合.我的问题是,Gnuplot拟合函数不适用于时间数据.我在这里发现了一个类似的问题:使用Gnuplot进行时间序列的线性回归,但我不想使用其他软件.我也不知道如何将时间值更改为数字,然后再返回....
任何人都可以帮我解决这个问题与Gnuplot?
非常感谢!
我有两个数据集,指的是以两种不同的方式执行的相同过程.相对于实时执行A速度比执行慢B,但这两个图表代表相同的现象.
我可以将两者一起绘制如下:
plot 'A' using 1:2, 'B' using 1:2
Run Code Online (Sandbox Code Playgroud)
但是我获得了两个具有不同X刻度A的图形:速度较慢,因此图形很多.
我可以通过执行以下操作来规范化图表:
plot 'A' using ($1 / maxA):2, 'B' using ($1 / maxB):2
Run Code Online (Sandbox Code Playgroud)
哪个适合我.唯一的问题是maxA和maxB变量.它们很容易确定(tail -n1 A | cut -f1和tail -n1 B | cut -f1分别),但我想知道是否有自动化的方法.
提前感谢任何回答.
在我应用了Wrzlprmft的优秀答案之后,我终于得到了以下模式,这非常方便:
max(Source) = system('tail -n ' . Source . '| cut -f1')
A = 'path/to/A'
maxA = max(A)
plot A using ($1 / maxA):2
Run Code Online (Sandbox Code Playgroud)
另一个可能的改进可能是包含函数的Column参数 …