The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
Username:
Password:
Save Password
Forgot your Password? | Admin Options

 All Forums
 Origin Forum
 Origin Forum
 Function to scale Ternary Plot
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

tantiger

Singapore
41 Posts

Posted - 08/18/2004 :  01:56:52 AM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic
Hi, all,

Have to say, scale a Ternary Plot is a necessary fuction Origin should have provided.

After days of working on Origin C, now I have made the draft framework, which can run properly according to my usage.

Would like to share it with you and any improvement, debug, etc. are appreciated.

Copy and paste the following codes, complie it and call it by type
main in the script window.

Before you play it, you should have either a ternary plot or a worksheet contains 3 columns set as X Y Z.

_________________________________________________


#include <Origin.h>
#include <GetNBox.h>

bool myDialogOnChangeEvent(TreeNode& tr, int nRow, int nType, Dialog& Dlg);
bool ApplyOnClick(TreeNode& tr);
void main();
void ChangeScale(TreeNode& tr);

bool bScaled=FALSE, bXModi1=FALSE, bYModi1=FALSE, bZModi1=FALSE, bWksready=FALSE;
bool bXModi2=FALSE, bYModi2=FALSE, bZModi2=FALSE;
double dXInc=0.1,dX_from,dX_to,dY_from,dY_to,dZ_from,dZ_to,dYInc=0.1,dZInc=0.1;
double dX_from1,dY_from1,dZ_from1, dDivFactor;
Dataset dsO,dsC;
string strWindowName;
int iPageType;
Worksheet wks;
PageBase pb;
WorksheetPage wp;
GraphPage gp;
GraphLayer gl;


void main()
{
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;

GETN_TREE(tr)
GETN_OPTION_GRIDLINE(flexGridRaisedVert)
GETN_BEGIN_BRANCH(X_axis,"X Axis")
GETN_OPTION_COLOR_LABEL(RGB(180,20,180))
GETN_OPTION_BRANCH(GETNBRANCH_OPEN | GETNBRANCH_KEEP_SIZE_ON_COLLAPSE)
GETN_STR(X_Title,"X Axis Title", "X")
GETN_OPTION_COLOR_LABEL(RGB(128,0,128))
GETN_NUM(X_From,"From:",0)
GETN_OPTION_COLOR_LABEL(RGB(128,0,128))
GETN_NUM(X_To, "To:", 100)
GETN_OPTION_COLOR_LABEL(RGB(128,0,128))
GETN_NUM(X_MajT, "Major Ticks:", 11)
GETN_OPTION_COLOR_LABEL(RGB(128,0,128))
GETN_NUM(X_MinT, "Minor Ticks:", 1)
GETN_OPTION_COLOR_LABEL(RGB(128,0,128))
GETN_END_BRANCH(X_axis)

GETN_BEGIN_BRANCH(Y_axis,"Y Axis")
GETN_OPTION_COLOR_LABEL(RGB(20,180,180))
GETN_OPTION_BRANCH(GETNBRANCH_OPEN | GETNBRANCH_KEEP_SIZE_ON_COLLAPSE)
GETN_STR(Y_Title,"Y Axis Title", "Y")
GETN_OPTION_COLOR_LABEL(RGB(0,128,128))
GETN_NUM(Y_From,"From:",0)
GETN_OPTION_COLOR_LABEL(RGB(0,128,128))
GETN_NUM(Y_To, "To:", 100)
GETN_OPTION_COLOR_LABEL(RGB(0,128,128))
GETN_NUM(Y_MajT, "Major Ticks:", 11)
GETN_OPTION_COLOR_LABEL(RGB(0,128,128))
GETN_NUM(Y_MinT, "Minor Ticks:", 1)
GETN_OPTION_COLOR_LABEL(RGB(0,128,128))
GETN_END_BRANCH(Y_axis)

GETN_BEGIN_BRANCH(Z_axis,"Z Axis")
GETN_OPTION_COLOR_LABEL(RGB(10,10,180))
GETN_OPTION_BRANCH(GETNBRANCH_OPEN | GETNBRANCH_KEEP_SIZE_ON_COLLAPSE)
GETN_STR(Z_Title,"Z Axis Title", "Z")
GETN_OPTION_COLOR_LABEL(COLOR_NAVY)
GETN_NUM(Z_From,"From:",0)
GETN_OPTION_COLOR_LABEL(COLOR_NAVY)
GETN_NUM(Z_To, "To:", 100)
GETN_OPTION_COLOR_LABEL(COLOR_NAVY)
GETN_NUM(Z_MajT, "Major Ticks:", 11)
GETN_OPTION_COLOR_LABEL(COLOR_NAVY)
GETN_NUM(Z_MinT, "Minor Ticks:", 1)
GETN_OPTION_COLOR_LABEL(COLOR_NAVY)
GETN_END_BRANCH(Z_axis)

GETN_BEGIN_BRANCH(MiscSet,"Misc Items (for all axis)")
GETN_OPTION_COLOR_LABEL(RGB(60,60,20))
GETN_OPTION_BRANCH(GETNBRANCH_OPEN | GETNBRANCH_KEEP_SIZE_ON_COLLAPSE)
GETN_CHECK(AxisCorner,"Axis Title at Corner",false)
GETN_OPTION_COLOR_LABEL(RGB(100,100,20))
GETN_STR(TickPrefix, "Tick Prefix", "")
GETN_OPTION_COLOR_LABEL(RGB(100,100,20))
GETN_STR(TickSuffix, "Tick Surfix", "")
GETN_OPTION_COLOR_LABEL(RGB(100,100,20))
GETN_NUM(DivFactor,"Divided by Factor", 1)
GETN_OPTION_COLOR_LABEL(RGB(100,100,20))

GETN_END_BRANCH(MiscSet)

pb = Project.Pages();
iPageType = pb.GetType();
if( iPageType != EXIST_WKS&&iPageType != EXIST_PLOT )
{
MessageBox( NULL, "Oh, please, are you sure you want sacle this?",
NULL , MB_OK|MB_ICONSTOP);
return ;
}
if ( iPageType == EXIST_WKS)
{
wp = (WorksheetPage) pb;

if( !wp.IsValid())
{
MessageBox( NULL, "WorksheetPage Error", NULL , MB_OK|MB_ICONSTOP);
return ;
}
wks = (Worksheet) wp.Layers(0);
if( !wks.IsValid() )
{
MessageBox( NULL, "Worksheet Error", NULL , MB_OK|MB_ICONSTOP);
return ;
}
strWindowName=wks.GetPage().GetName();
if(wks.GetNumCols()<3)
{
MessageBox( NULL, "At least 3 columns are needed.",NULL, MB_OK|MB_ICONSTOP);
return;
}

if(wks.GetNumCols()!=9&&wks.GetNumCols()>3)
{
if( MessageBox( GetWindow(), "Some columns will be cleared. Are you sure?",
"Warning!" , MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 ) == IDNO )
return;

}
bWksready=(wks.GetNumCols()==9)*(wks.Columns(2).GetType()==5)*
(wks.Columns(5).GetType()==5)*(wks.Columns(8).GetType()==1);
while(wks.DeleteCol(6));
while(wks.GetNumCols()<9)wks.AddCol();
wks.SetColDesignations("XYZXYZNNN");
if(!bWksready){
dsO.Attach(wks,0);
dsC.Attach(wks,3);
dsC=dsO;
dsO.Detach();
dsC.Detach();
dsO.Attach(wks,1);
dsC.Attach(wks,4);
dsC=dsO;
dsO.Detach();
dsC.Detach();
dsO.Attach(wks,2);
dsC.Attach(wks,5);
dsC=dsO;
dsO.Detach();
dsC.Detach();
}
LT_execute("work -s 1 0 3 0");
LT_execute("work -p 245 ternary");
tr.X_axis.X_Title.strVal=LabTalk.xb.text$;
tr.Y_axis.Y_Title.strVal=LabTalk.yr.text$;
tr.Z_axis.Z_Title.strVal=LabTalk.zf.text$;
LabTalk.layer.x.label.pt=LabTalk.layer.y2.label.pt;
}

pb = Project.Pages();
gp = (GraphPage) pb;
if( !gp.IsValid() )
{
MessageBox( NULL, "GraphPage Error", NULL , MB_OK|MB_ICONSTOP);
return ;
}
gl = (GraphLayer) gp.Layers(0);
if(gl.GetCoordinateType() == FRAME_COOR_TERNARY)
{
GraphObject go=gl.GraphObjects("myX");
if(!go.IsValid()){
LT_execute("lab -p 105 105 -j 2 -n myX \\p118(X)");
LT_execute("myX.show=0");
LT_execute("lab -p 41 0 -j 0 -n myY \\p118(Y)");
LT_execute("myY.show=0");
LT_execute("lab -p (-10) 105 -j 2 -n myZ \\p118(Z)");
LT_execute("myZ.show=0");
}
go=gl.GraphObjects("Applied");
if(go.IsValid()){
DataPlot dpTemp=gl.DataPlots(0);
strWindowName=dpTemp.GetDatasetName();
strWindowName=strWindowName.GetToken(0,'_');
wp = Project.WorksheetPages(strWindowName);
wks = (Worksheet) wp.Layers(0);
if((wks.GetNumCols()==9)*(wks.Columns(2).GetType()==5)*
(wks.Columns(5).GetType()==5)*(wks.Columns(8).GetType()==1))
{
Column colTemp;
int iTemp;
double dTemp;

colTemp=wks.Columns(6);
iTemp=colTemp.GetUpperIndex();
dTemp=wks.Cell(0,8)+wks.Cell(0,7)+wks.Cell(iTemp,6);
dTemp=1.0/dTemp;
tr.X_axis.X_from.dVal=wks.Cell(0,6)*dTemp*100;
tr.X_axis.X_to.dVal=wks.Cell(iTemp,6)*dTemp*100;
tr.X_axis.X_MajT.nVal=iTemp+1;
tr.X_axis.X_MinT.nVal=LabTalk.layer.x.minorTicks;

colTemp=wks.Columns(7);
iTemp=colTemp.GetUpperIndex();
tr.Y_axis.Y_from.dVal=wks.Cell(0,7)*dTemp*100;
tr.Y_axis.Y_to.dVal=wks.Cell(iTemp,7)*dTemp*100;
tr.Y_axis.Y_MajT.nVal=iTemp+1;
tr.Y_axis.Y_MinT.nVal=LabTalk.layer.y.minorTicks;

colTemp=wks.Columns(8);
iTemp=colTemp.GetUpperIndex();
tr.Z_axis.Z_from.dVal=wks.Cell(0,8)*dTemp*100;
tr.Z_axis.Z_to.dVal=wks.Cell(iTemp,8)*dTemp*100;
tr.Z_axis.Z_MajT.nVal=iTemp+1;
tr.Z_axis.Z_MinT.nVal=LabTalk.layer.z.minorTicks;

tr.MiscSet.TickPrefix.strVal=LabTalk.layer.x.label.pre$;
tr.MiscSet.TickSuffix.strVal=LabTalk.layer.x.label.suf$;
tr.MiscSet.DivFactor.dVal=dTemp;
tr.MiscSet.AxisCorner.nVal=LabTalk.myX.show;
}
}

if(LabTalk.myX.show){
tr.X_axis.X_Title.strVal=LabTalk.myX.text$;
tr.Y_axis.Y_Title.strVal=LabTalk.myY.text$;
tr.Z_axis.Z_Title.strVal=LabTalk.myZ.text$;
}
else {
tr.X_axis.X_Title.strVal=LabTalk.xb.text$;
tr.Y_axis.Y_Title.strVal=LabTalk.yr.text$;
tr.Z_axis.Z_Title.strVal=LabTalk.zf.text$;
}
}
else
{MessageBox( NULL, "This is not a ternary plot.",NULL, MB_OK|MB_ICONSTOP);
return;
}
if( GetNBox(tr, "Scale the Ternary Plot", "Please specify the correct range [0-100]",
ApplyOnClick, myDialogOnChangeEvent)) ApplyOnClick(tr);

}

bool ApplyOnClick(TreeNode& tr)
{
LT_execute("lab -n Applied OK");
LT_execute("Applied.show=0");

dX_from=tr.X_axis.X_from.dVal;
dX_to=tr.X_axis.X_to.dVal;
dY_from=tr.Y_axis.Y_from.dVal;
dY_to=tr.Y_axis.Y_to.dVal;
dZ_from=tr.Z_axis.Z_from.dVal;
dZ_to=tr.Z_axis.Z_to.dVal;


dX_from1=dX_from+dZ_from+dY_to;
dY_from1=dY_from+dZ_from+dX_to;

double dTemp=dX_from+dY_from+dZ_to;

if(round(abs(dX_from1-dTemp),0)!=0||round(abs(dY_from1-dTemp),0)!=0
||round(abs(dX_from1-dY_from1),0)!=0){
MessageBox( NULL, "Please input correct values.", NULL , MB_OK|MB_ICONQUESTION);
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return false;
}

foreach(DataPlot dp in gl.DataPlots)
{
strWindowName=dp.GetDatasetName();
strWindowName=strWindowName.GetToken(0,'_');
wp = Project.WorksheetPages(strWindowName);
wks = (Worksheet) wp.Layers(0);
if( !wks.IsValid() ) {
MessageBox( NULL, "WorksheetPage Error", NULL , MB_OK|MB_ICONSTOP);
return false;
}
if(wks.Columns(0).GetType()!=3||wks.Columns(1).GetType()!=0||wks.Columns(2).GetType()!=5)
{
MessageBox( NULL, "Types of first 3 columns should be X Y Z.",
NULL, MB_OK|MB_ICONSTOP);
return false;
}
if(wks.GetNumCols()!=9&&wks.GetNumCols()>3)
{
if( MessageBox( GetWindow(), "Some columns will be cleared. Are you sure?",
"Warning!" , MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 ) == IDNO )
{
return false;
}
}
bWksready=(wks.GetNumCols()==9)*(wks.Columns(2).GetType()==5)*
(wks.Columns(5).GetType()==5)*(wks.Columns(8).GetType()==1);
while(wks.DeleteCol(6));
while(wks.GetNumCols()<9)wks.AddCol();
wks.SetColDesignations("XYZXYZNNN");
if(!bWksready){
dsO.Attach(wks,0);
dsC.Attach(wks,3);
dsC=dsO;
dsO.Detach();
dsC.Detach();
dsO.Attach(wks,1);
dsC.Attach(wks,4);
dsC=dsO;
dsO.Detach();
dsC.Detach();
dsO.Attach(wks,2);
dsC.Attach(wks,5);
dsC=dsO;
dsO.Detach();
dsC.Detach();
}
ChangeScale(tr);
}
return true
}

void ChangeScale(TreeNode& tr)
{
int iCount;
Column col;
string strTemp;

dDivFactor=tr.MiscSet.DivFactor.dVal;
if(dDivFactor<=0.0)dDivFactor=1.0;

double dTemp=dX_from+dY_from+dZ_to;

dX_from=dX_from/dTemp;
dX_to=dX_to/dTemp;
dY_from=dY_from/dTemp;
dY_to=dY_to/dTemp;
dZ_from=dZ_from/dTemp;
dZ_to=dZ_to/dTemp;

if(tr.X_axis.X_MajT.nVal<2) tr.X_axis.X_MajT.nVal=2;
if(tr.Y_axis.Y_MajT.nVal<2) tr.Y_axis.Y_MajT.nVal=2;
if(tr.Z_axis.Z_MajT.nVal<2) tr.Z_axis.Z_MajT.nVal=2;

dXInc=(dX_to-dX_from)/(tr.X_axis.X_MajT.nVal-1);
dYInc=(dY_to-dY_from)/(tr.Y_axis.Y_MajT.nVal-1);
dZInc=(dZ_to-dZ_from)/(tr.Z_axis.Z_MajT.nVal-1);

for(iCount=0;iCount<tr.X_axis.X_MajT.nVal;iCount++)
wks.SetCell(iCount,6,(dX_from+dXInc*iCount)/dDivFactor);
for(iCount=0;iCount<tr.Y_axis.Y_MajT.nVal;iCount++)
wks.SetCell(iCount,7,(dY_from+dYInc*iCount)/dDivFactor);
for(iCount=0;iCount<tr.Z_axis.Z_MajT.nVal;iCount++)
wks.SetCell(iCount,8,(dZ_from+dZInc*iCount)/dDivFactor);
dTemp=wks.Cell(0,3)+wks.Cell(0,4)+wks.Cell(0,5);
dsO.Attach(wks,3);
dsC.Attach(wks,0);
dsC=(dsO-dX_from*dTemp)/(dX_to-dX_from);
dsO.Detach();
dsC.Detach();
dsO.Attach(wks,4);
dsC.Attach(wks,1);
dsC=(dsO-dY_from*dTemp)/(dY_to-dY_from);
dsO.Detach();
dsC.Detach();
dsO.Attach(wks,5);
dsC.Attach(wks,2);
dsC=(dsO-dZ_from*dTemp)/(dZ_to-dZ_from);
dsO.Detach();
dsC.Detach();

col = wks.Columns(6);
strTemp.Format("%s_%s",strWindowName,col.GetName());
LabTalk.layer.x.label.dataset$=strTemp;
LabTalk.layer.x.label.type=8;
LabTalk.layer.x.inc=1.0/(tr.X_axis.X_MajT.nVal-1);
LabTalk.layer.x.minorTicks=tr.X_axis.X_MinT.nVal;
LabTalk.layer.x.label.pre$=tr.MiscSet.TickPrefix.strVal;
LabTalk.layer.x.label.suf$=tr.MiscSet.TickSuffix.strVal;
LabTalk.layer.x.label.pt=LabTalk.layer.y2.label.pt;
if(!tr.MiscSet.AxisCorner.nVal){
strTemp.Format("lab -xb \"%s\"",tr.X_axis.X_Title.strVal);
LT_execute("xb.show=1");
LT_execute("myX.show=0");
}
else {
strTemp.Format("lab -n myX \"%s\"",tr.X_axis.X_Title.strVal);
LT_execute("xb.show=0");
LT_execute("myX.show=1");
}
LT_execute(strTemp);

col = wks.Columns(7);
strTemp.Format("%s_%s",strWindowName,col.GetName());
LabTalk.layer.y2.label.dataset$=strTemp;
LabTalk.layer.y2.label.type=8;
LabTalk.layer.y2.inc=1.0/(tr.Y_axis.Y_MajT.nVal-1);
LabTalk.layer.y2.minorTicks=tr.Y_axis.Y_MinT.nVal;
LabTalk.layer.y2.label.pre$=tr.MiscSet.TickPrefix.strVal;
LabTalk.layer.y2.label.suf$=tr.MiscSet.TickSuffix.strVal;
if(!tr.MiscSet.AxisCorner.nVal){
strTemp.Format("lab -yr \"%s\"",tr.Y_axis.Y_Title.strVal);
LT_execute("yr.show=1");
LT_execute("myY.show=0");
}
else {
strTemp.Format("lab -n myY \"%s\"",tr.Y_axis.Y_Title.strVal);
LT_execute("yr.show=0");
LT_execute("myY.show=1");
}
LT_execute(strTemp);

col = wks.Columns(8);
strTemp.Format("%s_%s",strWindowName,col.GetName());
LabTalk.layer.z.label.dataset$=strTemp;
LabTalk.layer.z.label.type=8;
LabTalk.layer.z.inc=1.0/(tr.Z_axis.Z_MajT.nVal-1);
LabTalk.layer.z.minorTicks=tr.Z_axis.Z_MinT.nVal;
LabTalk.layer.z.label.pre$=tr.MiscSet.TickPrefix.strVal;
LabTalk.layer.z.label.suf$=tr.MiscSet.TickSuffix.strVal;

if(!tr.MiscSet.AxisCorner.nVal){
strTemp.Format("lab -zf \"%s\"",tr.Z_axis.Z_Title.strVal);
LT_execute("zf.show=1");
LT_execute("myZ.show=0");

}
else{
strTemp.Format("lab -n myZ \"%s\"",tr.Z_axis.Z_Title.strVal);
LT_execute("zf.show=0");
LT_execute("myZ.show=1");
}
LT_execute(strTemp);

bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
}


bool myDialogOnChangeEvent(TreeNode& tr, int nRow, int nType, Dialog& Dlg)
{
if(nType != TRGP_DOUBLE||nRow==-1)
return false;

if(nRow==2) bXModi1=true;
if(nRow==3) bXModi2=true;
if(nRow==8) bYModi1=true;
if(nRow==9) bYModi2=true;
if(nRow==14)bZModi1=true;
if(nRow==15)bZModi2=true;

if(bXModi1*bXModi2*bYModi1*bYModi2*!(bZModi1*bZModi2)){
dX_from=tr.X_axis.X_from.dVal;
dX_to=tr.X_axis.X_to.dVal;
dY_from=tr.Y_axis.Y_from.dVal;
dY_to=tr.Y_axis.Y_to.dVal;
dZ_from=100.0-dX_from-dY_to;
dZ_from1=100.0-dX_to-dY_from;
dZ_to=100.0-dX_from-dY_from;
if(dZ_from<0||dZ_to<0||round(abs(dZ_from1-dZ_from),0)!=0) {
MessageBox( NULL, "Please input correct values.", NULL , MB_OK|MB_ICONQUESTION);
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return false;
}
tr.Z_axis.Z_from.dVal=dZ_from;
tr.Z_axis.Z_to.dVal=dZ_to;
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return true;
}

if(bXModi1*bXModi2*bZModi1*bZModi2*!(bYModi1*bYModi2)){
dX_from=tr.X_axis.X_from.dVal;
dX_to=tr.X_axis.X_to.dVal;
dZ_from=tr.Z_axis.Z_from.dVal;
dZ_to=tr.Z_axis.Z_to.dVal;
dY_from=100.0-dX_from-dZ_to;
dY_from1=100.0-dZ_from-dX_to;
dY_to=100.0-dX_from-dZ_from;
if(dY_from<0||dY_to<0||round(abs(dY_from1-dY_from),0)!=0) {
MessageBox( NULL, "Please input correct values.", NULL , MB_OK|MB_ICONQUESTION);
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return false;
}
tr.Y_axis.Y_from.dVal=dY_from;
tr.Y_axis.Y_to.dVal=dY_to;
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return true;
}
if(bYModi1*bYModi2*bZModi1*bZModi2*!(bXModi1*bXModi2)){

dY_from=tr.Y_axis.Y_from.dVal;
dY_to=tr.Y_axis.Y_to.dVal;
dZ_from=tr.Z_axis.Z_from.dVal;
dZ_to=tr.Z_axis.Z_to.dVal;
dX_from=100.0-dY_from-dZ_to;
dX_from1=100.0-dZ_from-dY_to;
dX_to=100.0-dY_from-dZ_from;
if(dX_from<0||dX_to<0||round(abs(dX_from1-dX_from),0)!=0) {
MessageBox( NULL, "Please input correct values.", NULL , MB_OK|MB_ICONQUESTION);
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return false;
}
tr.X_axis.X_from.dVal=dX_from;
tr.X_axis.X_to.dVal=dX_to;
bXModi1=false;
bXModi2=false;
bYModi1=false;
bYModi2=false;
bZModi1=false;
bZModi2=false;
return true;
}
return false;
}


easwar

USA
1965 Posts

Posted - 08/18/2004 :  09:58:55 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi tantiger,

I suggest that you place this code (as an OC file, or OPK etc) in our File Exchange area:
http://www.originlab.com/fileexchange/index.aspx

We will work on including a scaling feature for ternary plots in the next version.

Thanks,

Easwar
OriginLab


Go to Top of Page

tantiger

Singapore
41 Posts

Posted - 08/18/2004 :  10:06:41 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
I've made an OPK file and submitted it just now. In the graphing category.

For those interested, please use this one as I solved one bug.



Edited by - tantiger on 08/18/2004 10:10:14 PM

Edited by - tantiger on 08/18/2004 10:10:45 PM
Go to Top of Page
  Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000