我想根据ab-initio能量输入绘制三元相图。在那里,我发现了一个可以帮助我的有用工具:
https://de.mathworks.com/matlabcentral/fileexchange/2299-alchemyst-ternplot
我需要改变几个问题:
我喜欢在图上看到我的输入阶段“名称标签”,我输入数据中的坐标。 (不仅仅是单独图中的蓝点)
我在terndemo.m中输入了正能量值,如下所示。然而,它们实际上是负值,当我输入负值时,表面没有正确显示。
我需要给出热谱标签吗?
最后,我的轴标签开始不正确。例如,0不在三角形的边缘点。
我还附上了关于这个数字的所有问题。
有人可以就这些问题发表一些意见吗?
---这是我的demotern.m输入:
%% Ti Ce Fe
% Name of the phases in coordinates below: Ti, Ce, Fe, FeTi, Fe2Ti,
% CeFe2,CeFe5, Ce2Fe17 and CeFe11Ti
experimental = [...
1.000 0.000 0.000
0.000 1.000 0.000
0.000 0.000 1.000
0.500 0.000 0.500
0.340 0.000 0.660
0.000 0.340 0.660
0.000 0.160 0.840
0.000 0.110 0.890
0.0765 0.0765 0.847
];
% data values are actually negative, here I enter positive value
data = [...
0.0
0.0
0.0
0.419
0.273
0.090
0.014
0.010
0.068
];
A = experimental(:, 1)';
B = experimental(:, 2)';
C = 1 - (A + B);
figure
subplot(2, 2, 1)
ternplot(A, B, C, '.'); ternlabel('Content of Titanium', 'Content of Cerium', 'Content of Iron');
subplot(2, 2, 2)
ternpcolor(A, B, data); ternlabel('Content of Titainum', 'Content of Cerium', 'Content of Iron');
shading interp
subplot(2, 2, 3)
terncontour(A, B, data); ternlabel('Content of Titanim', 'Content of Cerium', 'Content of Iron');
subplot(2, 2, 4)
ternsurf(A, B, data);
答案 0 :(得分:0)
我是ternplot的作者
这是我能做的最好的事情:
ternpcolor
中绘制曲面图的方式使得很难使用负值。有一个解决方案,包括从下面查看图,但我会留下另一个问题-
names = {'Ti', 'Ce', 'Fe', 'FeTi', 'Fe2Ti', 'CeFe2', 'CeFe5', ...
'Ce2Fe17', 'CeFe11Ti'};
figure
ternpcolor(A, B, data);
vertexlabel('Titainum', 'Cerium', 'Iron');
shading interp
c = colorbar();
ylabel(c, 'Formation energy per atom (eV)')
hold on
for i = 1:length(names)
[x, y] = terncoords(experimental(i, 1), experimental(i, 2));
z = data(i);
scatter3(x, y, z+0.4, 100, 'filled', 'ks');
t = text(x + 0.01, y-0.02, z+0.03, names{i}, 'fontsize', 20);
end
hold off
如下所示,没有手动编辑:
但是稍微调整一下(实际上只是移动标签)它非常实用: