Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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,我有一些数据如下所示: # time Ux Uy sigXX sigYY sigXY 1.e-3 0.001 -0.001 1.e6 0.7e6 2.e5 2.e-3 0.002 -0.0025 2.e6 1.2e6 5.e5 3.e-3 0.004 -0.0035 2.8e6 1.4e6 9.e5 您可以猜到数据是以国际单位制(s,m,Pa)表示的,我使用的是gnuplot 为了使我的图可读,我想把x/yti

我有一些数据如下所示:

# time  Ux      Uy      sigXX   sigYY   sigXY
1.e-3   0.001  -0.001   1.e6    0.7e6   2.e5
2.e-3   0.002  -0.0025  2.e6    1.2e6   5.e5
3.e-3   0.004  -0.0035  2.8e6   1.4e6   9.e5
您可以猜到数据是以国际单位制(s,m,Pa)表示的,我使用的是gnuplot

为了使我的图可读,我想把x/ytics放在(ms,mm,MPa)中。这通常是通过
使用($..)
完成的:

。。。但是添加所有这些括号会变得单调乏味(因为我在这个文件中重复了很多次)。我梦想着这样的事情:

set datafactor $1 1000
set datafactor $4 1.e-6
plot 'data.dat' u 1:4 
但是还没找到。 我知道我也可以使用重定向和外部脚本动态地进行转换(如果有人感兴趣,我会将其作为答案发布),但对于这样一个简单而常见的任务来说,它似乎太复杂了

有人知道怎么做吗?有没有一种原生的gnuplot方法可以一次性完成这种转换?

因此,这里有一个(不简单的)带有外部脚本的解决方案。 在gnuplot中:

data='< ./scale.py data.dat 1000 1000 1000 1.e-6 1.e-6 1.e-6'
plot data u 1:4

如果转换函数是一些复杂的操作,这将适合我。但这里我的问题似乎很简单,我想应该有一个gnuplot本机解决方案。

您可能有3种选择:

  • 使用任何软件永久更改数据文件
  • 将数据文件列加载到gnuplot时,将它们相乘一次
  • 每次打印列时,将列相乘
  • 选项1您可能不想要,选项3您肯定不想要,因此,选项2可能是一个类似于Python代码的解决方案。基本上,将文件加载到一个数据块中,缩放它,然后绘制这个数据块

    ### mulitply data columns with factor
    reset session
    
    set table $Data
        plot 'data.dat' u ($1*1000):($2*1000):($3*1000):($4*1e-6):($5*1e-6):($6*1e-6) w table
    unset table
    
    plot $Data u 1:4
    ### end of code
    
    限制:


    请记住,如果您有一些注释行或数据被单个或多个emtpy行分隔,在某些情况下可能是打印所必需的,则当
    plot。。。使用表
    。如果您需要这些空行,可能会有更复杂的gnuplot解决方案,或者您需要调用外部软件。

    这正是我要找的。感谢您指出这两个概念:“内联数据”和“表”。
    ### mulitply data columns with factor
    reset session
    
    set table $Data
        plot 'data.dat' u ($1*1000):($2*1000):($3*1000):($4*1e-6):($5*1e-6):($6*1e-6) w table
    unset table
    
    plot $Data u 1:4
    ### end of code