Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gnuplot中的自动偏移_Gnuplot - Fatal编程技术网

gnuplot中的自动偏移

gnuplot中的自动偏移,gnuplot,Gnuplot,我从一个数据文件中绘制数据,数据具有这样的行为:在x轴上一段时间后,y轴开始单调减少,最终变为零(稍后会有一些非常小的波动) 因此,我想偏移y轴,以便这些波动清晰可见。为此,我使用了类似于的方法设置偏移量0,0,0,0.1。但实际上我已经编写了一个bash脚本来为我生成情节。我只需要为它提供数据文件名。因此,对于每个绘图,我不想进入脚本并根据数据手动设置偏移值 我想知道偏移量是否由gnuplot根据轴上的箱子大小自动确定,比如偏移量是1*箱子大小。所以我的命令看起来像: set offsets

我从一个数据文件中绘制数据,数据具有这样的行为:在x轴上一段时间后,y轴开始单调减少,最终变为零(稍后会有一些非常小的波动)

因此,我想偏移y轴,以便这些波动清晰可见。为此,我使用了类似于
的方法设置偏移量0,0,0,0.1
。但实际上我已经编写了一个bash脚本来为我生成情节。我只需要为它提供数据文件名。因此,对于每个绘图,我不想进入脚本并根据数据手动设置偏移值

我想知道偏移量是否由
gnuplot
根据轴上的箱子大小自动确定,比如偏移量是1*箱子大小。所以我的命令看起来像:

set offsets 0,0,0,1*$bin_size
有没有办法做到这一点

编辑:

这是我正在使用的脚本

#!/bin/bash

#Requires that the script be in the same directory as the data files
#sed -n '3001,4000p' fish_data_re.dat > fish_data_re_3k_4k.dat : Can be used to extract data from specific range in data file

DATA_FILE_NAME="abc"
DATA_FILE_TYPE="dat"


#Code to generate normalised files
awk 'NR == FNR {if(max < $2) {max = $2}; next} {$2 = $2 / max; printf "%f\t%f\n", $1, $2}' $DATA_FILE_NAME.$DATA_FILE_TYPE $DATA_FILE_NAME.$DATA_FILE_TYPE > $DATA_FILE_NAME\_normed.$DATA_FILE_TYPE

DATA_FILE_NAME="$DATA_FILE_NAME\_normed"
DATA_FILE_TYPE="dat"

OUTPUT_FILE_TYPE="eps"
OUTPUT_FILE_NAME="$DATA_FILE_NAME\_plot.$OUTPUT_FILE_TYPE"

X_LABEL="Time"
Y_LABEL="Real Classical Fisher Information"
TITLE="Real Classical Fisher Information vs Time"

#Set font size for axis tics
X_TICS_SIZE="6"
Y_TICS_SIZE="6"


gnuplot <<- MULTI_LINE_CODE_TAG

set xlabel "$X_LABEL"
set ylabel "$Y_LABEL"

#Following command allows the printing of underscore from name of data file in plot
set key noenhanced

set title "$TITLE" 

set xtics font ", $X_TICS_SIZE"
set ytics font ", $Y_TICS_SIZE"

set xtics nomirror
set ytics nomirror

#set ytics format "%.22g"
set ytics format "%0.s*10^{%L}"
#set xtics format "%t"



set multiplot

#------The big-plot------

set title "$TITLE" 
set offsets 0,0,0,0.01

#Following plots only data from line 1 to line 100
#plot "<(sed -n '1,100p' $DATA_FILE_NAME.$DATA_FILE_TYPE)" u 1:2 notitle w l lc "red" lw 2 
plot "$DATA_FILE_NAME.$DATA_FILE_TYPE" u 1:2 notitle w l lc "red" lw 2

#------The sub-plot------

unset title
unset offsets

set origin 0.25,0.3
set size 0.45,0.45
set xrange [30:60]
set yrange [-0.01:0.01]
unset xlabel
unset ylabel
#unset label

plot "$DATA_FILE_NAME.$DATA_FILE_TYPE" u 1:2 notitle w l lc "red" lw 2

unset multiplot

set term "$OUTPUT_FILE_TYPE"
set output "$OUTPUT_FILE_NAME"

replot

MULTI_LINE_CODE_TAG

exit
#/bin/bash
#要求脚本与数据文件位于同一目录中
#sed-n'30014000p'fish_数据_re.dat>fish_数据_re_3k_4k.dat:可用于从数据文件中的特定范围提取数据
数据文件\u NAME=“abc”
数据文件类型=“dat”
#生成标准化文件的代码
awk'NR==FNR{if(max<$2){max=$2};next}{$2=$2/max;printf”%f\t%f\n“,$1,$2}'$DATA\u FILE\u NAME.$DATA\u FILE\u TYPE$DATA\u FILE\u NAME.$DATA\u FILE\u TYPE>$DATA\u FILE\u NAME\\规范化。$DATA\u FILE\u TYPE
DATA\u FILE\u NAME=“$DATA\u FILE\u NAME\\u Normad”
数据文件类型=“dat”
输出文件\u TYPE=“eps”
OUTPUT_FILE_NAME=“$DATA_FILE_NAME\\绘图。$OUTPUT_FILE_TYPE”
X_LABEL=“时间”
Y_LABEL=“真正的经典Fisher信息”
TITLE=“真正的经典Fisher信息与时间”
#设置轴的字体大小
X_TICS_SIZE=“6”
Y_TICS_SIZE=“6”

我想我还是不明白你的确切问题。顺便说一下,你的偏移量是-200e-3=-0.2而不是-0.002。 您的数据是否始终在0和1之间? 您可以根据图形设置偏移量(选中“帮助偏移量”

一般来说,为什么不使用对数标度呢?有了它,您将能够看到数据中的所有小功能

代码:

### linear scale vs logarithmic scale
reset session 

# Gauss curve by specifing Amplitude A, position x0 and width via FWHM
GaussW(x,x0,A,FWHM) = A * exp(-(x-x0)**2/(2*(FWHM/(2*sqrt(2*log(2))))**2))

# create some test data
set xrange[0:100]
set samples 500
set table $Data
    plot '+' u 1:(GaussW($1,5,1,2.5) + GaussW($1,40,7e-3,2) + GaussW($1,47,8e-4,5) + 2e-4) w table
unset table

set multiplot layout 1,2
    set offset 0,0,0, graph 0.2
    set yrange[-0.02:1]
    plot $Data u 1:2 w l title "linear y-scale"

    set logscale y
    set yrange[1e-4:1]
    plot $Data u 1:2 w l title "logarithmic y-scale"
unset multiplot
### end of code
结果:

### linear scale vs logarithmic scale
reset session 

# Gauss curve by specifing Amplitude A, position x0 and width via FWHM
GaussW(x,x0,A,FWHM) = A * exp(-(x-x0)**2/(2*(FWHM/(2*sqrt(2*log(2))))**2))

# create some test data
set xrange[0:100]
set samples 500
set table $Data
    plot '+' u 1:(GaussW($1,5,1,2.5) + GaussW($1,40,7e-3,2) + GaussW($1,47,8e-4,5) + 2e-4) w table
unset table

set multiplot layout 1,2
    set offset 0,0,0, graph 0.2
    set yrange[-0.02:1]
    plot $Data u 1:2 w l title "linear y-scale"

    set logscale y
    set yrange[1e-4:1]
    plot $Data u 1:2 w l title "logarithmic y-scale"
unset multiplot
### end of code

我不太清楚你想要什么。你说的箱子尺寸是什么意思?如果你想显示接近零的小波动,对数标度可能是一种选择?请展示一些示例数据、示例图形和一些代码。@theozh使用所需的代码和图形进行了更新。非常感谢。就这样。另外,请接受我对编辑的感谢。