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
 Ternary diagram WITHOUT normalization
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

Sabin1989

United Kingdom
5 Posts

Posted - 04/12/2018 :  11:54:55 AM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic
Origin Ver. and Service Release (Select Help-->About Origin): Pro 2018 SR1 b9.5.1.195
Operating System: Windows 7 64-bit

Hi!
I need to plot data in a ternary diagram WITHOUT any normalization.
Judging by the online help info, this is not straightforward with Origin for reasons I fail to understand.
I would be grateful for any suggestions on how to deal with this.
Cheers!

arstern

USA
237 Posts

Posted - 04/12/2018 :  12:35:03 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi,

Please see the notes section in Origin Help: https://www.originlab.com/doc/Origin-Help/Ternary-Graph

If your data does not normalize, Origin will provide a pop-up window asking you if you want Origin to Normalize or not normalize your data. Select No to plot the ternary diagram without normalization.

The pop-up window should look like this:



Thanks,
OriginLab
Aviel
Go to Top of Page

Sabin1989

United Kingdom
5 Posts

Posted - 04/13/2018 :  07:21:06 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Dear Aviel,

Many thanks for your reply!
I did select "No", but my data was still normalized.

Also, in the online help, it is stated that:
"And if you choose “No”, Origin will also normalize the input data and then plot, but the original data in the worksheet will not be changed."

To me, this makes it sound like it's not possible to plot without some normalization, and I don't understand why that should be the case.
Go to Top of Page

greg

USA
1378 Posts

Posted - 04/30/2018 :  5:55:25 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
By definition, a ternary plot represents the fraction of a whole (0 to 1) or percent (0 to 100) of each of three variables. Therefore, every row should add up to 1 or 100. If this is the case, Origin just plots. In all other cases, Origin will normalize the data and plot or leave the data alone and plot a normalized version of the data.

There is no hope!
(But I may be wrong.)
Go to Top of Page

Hideo Fujii

USA
1582 Posts

Posted - 05/03/2018 :  3:42:15 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi Sabin,

Greg is right - The idea of the Ternary plot is to show the ratio of 3 components;
But, this doesn't mean you cannot "map" the ratio to the other linear scale.
That is:
X:  0 <=x <=1,  Y: 0<=y<=1,    Z: 0<=z<=1 , and 
X': x1<=x'<=x2, Y':y1<=y'<=y2, Z':z1<=z'<=z2
then, x'=x1+x*(x2-x1), etc.
You can do this mapping manually, but you can also run the following script (from
XYZ 3-column worksheet):
////////////////////////////////////////////////////////////
If(wks.ncols!=3) {type -b Your worksheet should have exactly 3 columns; Return;}
wks.colsel(1,0); wks.colsel(2,0); wks.colsel(3,0);  //Clear highlighted columns
max1=max(col(1)); min1=min(col(1));
max2=max(col(2)); min2=min(col(2));
max3=max(col(3)); min3=min(col(3));
Xmin=prec(min1,6); Xmax=prec(max1,6); 
Ymin=prec(min2,6); Ymax=prec(max2,6); 
Zmin=prec(min3,6); Zmax=prec(max3,6);
gtyp$="Line+Symbol Scatter Line";
igtyp=1;
getN 
  (Graph Type) igtyp:gtyp$
  (X Axis Range) :@G (X From (<$(min1,*3))) Xmin (X To (>$(max1,*3))) Xmax (-) :@G
  (Y Axis Range) :@G (Y From (<$(min2,*3))) Ymin (Y To (>$(max2,*3))) Ymax (-) :@G
  (Z Axis Range) :@G (Z From (<$(min3,*3))) Zmin (Z To (>$(max3,*3))) Zmax (-) :@G
  (General Linear Ternary Plot);  //Ask axis ranges
worksheet -a 6;    //Add 6 columns
col(4)=(col(1)-Xmin)/(Xmax-Xmin);     //Maps X to 0-1 range
col(5)=(col(2)-Ymin)/(Ymax-Ymin);     //Maps Y to 0-1 range
col(6)=(col(3)-Zmin)/(Zmax-Zmin);     //Maps Z to 0-1 range
col(7)=col(4)/(col(4)+col(5)+col(6)); //Normalize X
col(8)=col(5)/(col(4)+col(5)+col(6)); //Normalize Y
col(9)=col(6)/(col(4)+col(5)+col(6)); //Normalize Z
col(7)[L]$=col(1)[L]$; col(8)[L]$=col(2)[L]$; col(9)[L]$=col(3)[L]$; //Take care Long Names
wks.col7.type=4;  //Col(7) as X
wks.col9.type=6;  //Col(9) as Z
wks.colsel(9,1);  //Highlight Z column
worksheet -P 245 Ternary;  //Make a Ternary plot;
if(igtyp==1)      layer -i202 %C; //Line+Symbol
else if(igtyp==2) layer -i201 %C; //Scatter
else if(igtyp==3) layer -i200 %C; //Line
//Set formulae for tick labels
String str$, str1$, str2$; 
str1$=$(XMax); str2$=$(XMin); str$="x*("+str1$+"-"+str2$+")+"+str2$; layer.x.label.formula$=str$; 
str1$=$(YMax); str2$=$(YMin); str$="x*("+str1$+"-"+str2$+")+"+str2$; layer.y2.label.formula$=str$; 
str1$=$(ZMax); str2$=$(ZMin); str$="x*("+str1$+"-"+str2$+")+"+str2$; layer.z.label.formula$=str$;
////////////////////////////////////////////////////////////

When you run this script, it asks you to enter the plot type, and the axis ranges.



After mapping the data, the axis tick labels are also mapped by the above formulae.




Hope this helps.

--Hideo Fujii
OriginLab
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