一个模板套所有——Origin命令流画图视频附件
字幕文件
在origin里使用命令流来画图
复制粘贴然后enter得到9列数据,每一列25行(junk.dat数据很简单,自己随便创建一下就行),现在我原本的要求是画1到8列为x,9列为y的八张图,但是又不想手动选择,于是就有想使用命令流来画的想法,(最主要的还是命令流可以重复使用,之后可能有好几张这样的数据表)
读取文件照葫芦画瓢即可,重点是修改数据以及画图,想修改第一列数据变成正数,用绝对值函数,这意外的简单。
仍然是复制粘贴运行
先画一个总图
很明显图例是选择y轴标签,我要换到x轴,需要用到下面的命令,可以了,后面就是一些改格式以及复制粘贴格式了。其实命令流也可以使用格式模板,但是我感觉没必要(主要是我还不会。。。)因为出图时肯定要修改一些格式,这个时候更改格式很简便,在origin中。
这并不是我之前想要的效果,我是想要1列与9列一个图,以此类推2列与9列也要一张图。于是我想到循环命令,但是很可惜,暂时不知道循环for如何解决参数传递进%(1X,@LL)(这个是我命名图的操作,使用的是每一列的长名称),因此使用傻瓜命令,一行一行修改。修改如下,这里有个坑,就是第2列重复操作后图名称会变,这是因为当前实在sph_gd_s图名称下,要正确识别,需要激活junk.dat工作簿,激活如左。下面六个图一次性生成,复制粘贴如右。很好,八个图都正确画好了。如果想知道具体命令流的解释,请看专栏部分。
命令流文件
//LabTalk 支持 三种 数值 数据 类型: double, int, 和 const。
//读取文件
string path$ = "E:\study\诸暨连拱隧道\flac3d\收敛约束法\";
findfiles ext:=junk.dat;
impASC;
//前处理数据
junk_A=abs(junk_A)
//画点线图,一定要指定工作表,202是点线图,ogl是指定画图名称,后面s是一个图层,建议【】里写好名称,s在要比较各类图的时候写好,否则用1就行
plotxy iy:=[junk]junk!(1:8,9) plot:=202 ogl:=[sph_GRC]s!
//label标签,下面显示的是多种用法
label -s %([junk]junk,1,5)
"可以使用 \b(加粗)
使用上下标 X\=(\i(i), 2)
\i(分子)
\ab(分母)
or \c4(加颜色) ";
//修改xy对应的图例标签,第一个是使用y做图例(修改示例),第二行是使用x做图例
// \l(1) %(1)\(O Shape:Square, Interior:Solid, Style:S, Fill:18, EdgeColor:1, EdgeWidth:15.0)
// \l(1) %(1X,@LL)\(O Shape:Square, Interior:Solid, Style:S, Fill:18, EdgeColor:1, EdgeWidth:15.0)
//%(1X,@LL)是工作表名称,%(1X,@LL)是x参数名称
// label -sl -n legend "\l(1) %(1, @WS) %(1X,@LL)"
//下面给一个完整示例
label -sl -n legend "\l(1) %(1X,@LL)
\l(2) %(2X,@LL)
\l(3) %(3X,@LL)
\l(4) %(4X,@LL)
\l(5) %(5X,@LL)
\l(6) %(6X,@LL)
\l(7) %(7X,@LL)
\l(8) %(8X,@LL) ";
//使用循环,暂时有问题,不改了
loop (ii, 1, 8) {
label -sl -n legend "\l($(ii)) %($(ii)X,@LL) ";
};
//回到最开始想1到8列作为x,9列作为一个图的命令流,这里全部放在sph_GRC图层里,暂时不知道循环for如何解决参数传递进%(1X,@LL),因此使用傻瓜命令,一行一行修改
for (ii=1 ; ii<=8 ; ii++ )
{
plotxy iy:=[junk]junk!(1,9) plot:=202 ogl:=["%(1X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
}
win -a junk;
plotxy iy:=[junk]junk!(1,9) plot:=202 ogl:=["%(1X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
win -a junk;
plotxy iy:=[junk]junk!(2,9) plot:=202 ogl:=["%(2X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ; //当前工作簿的第一个x标签当作图例,否则使用默认的y标签当作图例
win -a junk;
plotxy iy:=[junk]junk!(3,9) plot:=202 ogl:=["%(3X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
win -a junk;
plotxy iy:=[junk]junk!(4,9) plot:=202 ogl:=["%(4X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
win -a junk;
plotxy iy:=[junk]junk!(5,9) plot:=202 ogl:=["%(5X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
win -a junk;
plotxy iy:=[junk]junk!(6,9) plot:=202 ogl:=["%(6X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
win -a junk;
plotxy iy:=[junk]junk!(7,9) plot:=202 ogl:=["%(7X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
win -a junk;
plotxy iy:=[junk]junk!(8,9) plot:=202 ogl:=["%(8X,@LL)"] ;
label -sl -n legend \l(1) %(1X,@LL) ;
昨天晚上到今天下午,迷糊了一晚上。
终究还是浪费时间,因为简单的用不上,复杂的用不了,这够魔幻,权当是无聊下的玩具。