如何为三种混合物绘制三维三元图

时间:2016-10-16 15:48:22

标签: matlab 3d ternary ternplot

我已经尝试过你的terndemo,但我无法获得像你这样的图形数据。我的目的是介绍如何,每个配方负责3d三元图中的不同zetasize。我尝试编辑你的文件,但结果却不同。

%% Three D plot for ZetaSize of oil, surfactant and cosurfactant isotropic mixture blends
experimental = [...
   20    60   20
   20    50   30
   20    40   40
   20    30   50
   20    20   60
   25    60   15
   25    50   25
   25    40   35
   25    30   45
   25    20   55
   30    60   10
   30    50   20
   30    40   30
   30    30   40
   30    20   50
   35    55   10
   35    45   20
   35    35   30
   35    25   40];
data = [...
   252.2
   120.4
   165.7
   178.3
   158.9
   322
   294.8
   265.5
   160.7
   431.9
   225.2
   416.3
   484.9
   458.2
   765
   362.2
   526
   331
   743.7];

A = experimental(:, 1)';
B = experimental(:, 2)';
C = 1 - (A + B);

ternsurf(A, B, data); 
ternlabel('oil', 'surf', 'cosurf***strong text***');

1 个答案:

答案 0 :(得分:1)

我已更新此内容以匹配您的数据。请注意,坐标的最后一行不会加到100.我将它除以100并绘制了一个pcolor图而不是3D表面,因为我认为它对您的数据更清晰。如果你想要一个三维表面,你只需要将数据列除以1000就可以得到正确的比例并使用ternsurf

%% Three D plot for ZetaSize of oil, surfactant and cosurfactant isotropic mixture blends
experimental = [...
   20    60   20
   20    50   30
   20    40   40
   20    30   50
   20    20   60
   25    60   15
   25    50   25
   25    40   35
   25    30   45
   25    20   55
   30    60   10
   30    50   20
   30    40   30
   30    30   40
   30    20   50
   35    55   10
   35    45   20
   35    35   30
   35    45   40   % this row doesn't add to 100 
]/100; 
data = [...
   252.2
   120.4
   165.7
   178.3
   158.9
   322
   294.8
   265.5
   160.7
   431.9
   225.2
   416.3
   484.9
   458.2
   765
   362.2
   526
   331
   743.7];

A = experimental(:, 1)';
B = experimental(:, 2)';
C = 1 - (A + B);

ternpcolor(A, B, data);
shading interp
ternlabel('oil', 'surf', 'cosurf');
colorbar

这导致以下情节:

Program output