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种选择:
### 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