1. This is dataplot macro    SIMPLEX.DP
2.
3. Purpose--Generate a mixture experiment simplex triangular grid.
4.          Display the grid.
5.          Display superimposed data.
6.
7. Date   --December 1996
8.
9. Input  --the following items must pre-exist:
10.          1. Y  = the response variable
11.          2. X1 = the proportion of element 1 (0 to 1)
12.          3. X2 = the proportion of element 2 (0 to 1)
13.          4. X3 = the proportion of element 3 (0 to 1)
14.          5. S1 = the name of element 1 (a string)
15.          6. S2 = the name of element 2 (a string)
16.          7. S3 = the name of element 3 (a string)
17.
18. Output --a triangular simplex grid
19.          with the data points superimposed
20.
21. Example--SKIP 25
22.          READ PUNCH.DAT Y W P O
23.          LET X1 = (W-30)/70
24.          LET X2 = P/70
25.          LET X3 = O/70
26.          LET STRING S1 = Watermelon
27.          LET STRING S2 = Pineapple
28.          LET STRING S3 = Orange
29.          CALL SIMPLEX.DP
30.
31. -----START POINT-----
32.
33FEEDBACK OFF
34ERASE
35.
36. ----Step 1--Define horizontal and vertical percentage units-----
37.         for the landscape orientation image
38.
39LET PXMIN = 20
40LET PXMAX = 80
41LET PYMIN = 18
42LET PYMAX = 88
43.
44LET PXRANGE = PXMAX-PXMIN
45LET PYRANGE = PYMAX-PYMIN
46.
47. ----Step 2--Define the desired increment (in 0 to 1 units)-----
48.         for grid lines on each of the 3 axes
49.
50. LET INC = .10
51LET INC = 1
52
53.
54. ----Step 3--Generate the grid-----
55.
56LOOP FOR XDUMMY = 0 INC 1
57   LET PXSTART = PXMIN + 0.5*PXRANGE*XDUMMY
58   LET PYSTART = PYMIN + PYRANGE*XDUMMY
59   LET PXSTOP = PXMAX - (PXSTART-PXMIN)
60   LET PYSTOP = PYSTART
61   DRAW PXSTART PYSTART PXSTOP PYSTOP
62END LOOP
63.
64LOOP FOR XDUMMY = 0 INC 1
65   LET PXSTART = PXMAX - PXRANGE*XDUMMY
66   LET PYSTART = PYMIN
67   LET PXSTOP = PXSTART - 0.5*PXRANGE*(1-XDUMMY)
68   LET PYSTOP = PYSTART + PYRANGE*(1-XDUMMY)
69   DRAW PXSTART PYSTART PXSTOP PYSTOP
70END LOOP
71.
72LOOP FOR XDUMMY = 0 INC 1
73   LET PXSTART = PXMIN + PXRANGE*XDUMMY
74   LET PYSTART = PYMIN
75   LET PXSTOP = PXSTART + 0.5*PXRANGE*(1-XDUMMY)
76   LET PYSTOP = PYSTART + PYRANGE*(1-XDUMMY)
77   DRAW PXSTART PYSTART PXSTOP PYSTOP
78END LOOP
79.
80. ----Step 4--Annotate the plot-----
81.
82HW 2 1
83JUSTIFICATION CENTER
84.
85LET PXHALF = (PXMIN+PXMAX)/2
86LET PYTHIRD = PYMIN + (PYMAX-PYMIN)/3
87LET PXMINM = PXMIN-5
88LET PXMAXP = PXMAX+5
89LET PYMINM = PYMIN-4
90LET PYMINM2 = PYMIN-7
91LET PYMAXP = PYMAX+3
92LET PYMAXP2 = PYMAX+6
93.
94MOVE PXHALF PYMAXP2; TEXT X1 = 1
95MOVE PXHALF PYMAXP; TEXT ^S1
96MOVE PXMINM PYMINM; TEXT X2 = 1
97MOVE PXMINM PYMINM2; TEXT ^S2
98MOVE PXMAXP PYMINM; TEXT X3 = 1
99MOVE PXMAXP PYMINM2; TEXT ^S3
100.
101. ----Step 5--Superimpose the Design Points-----
102.
103LET K2 = SQRT(2)
104LET K6 = SQRT(6)
105.
106FILL ON
107JUSTIFICATION LEFT
108.
109LET N = NUMBER Y
110LOOP FOR K = 1 1 N
111   LET YK = Y(K)
112   LET X1K = X1(K)
113   LET X2K = X2(K)
114   LET X3K = X3(K)
115   .
116   LET H = (1/K2) * (X3K - X2K)
117   LET V = (1/K6) * (2 - 3*X2K - 3*X3K)
118   .
119   LET PX = PXHALF  + ((PXRANGE)/(2/K2)) * H
120   LET PY = PYTHIRD + ((PYRANGE)/(3/K6)) * V
121   .
122   MOVE PX PY
123   JUSTIFICATION CECE
124   FONT SIMPLEX
125   HW 1 0.75
126   TEXT CIRC()
127   FONT TEKTRONIX
128   HW
129   .
130   MOVE PX PY
131   JUSTIFICATION LECE
132   TEXT  ^YK
133END LOOP
134.
135MOVE 90 3
136HW 1 .5
137JUST LEFT
138TEXT SIMPLEX.DP
139.
140FEEDBACK ON
141