2016-11-08 9 views
2

Я хотел бы построить трехфазную фазовую диаграмму, основанную на вводе энергии ab initio. Там я нашел полезный инструмент, который может помочь мне:Графическая диаграмма фазы с MATLAB

https://de.mathworks.com/matlabcentral/fileexchange/2299-alchemyst-ternplot

Есть несколько вопросов, которые мне нужно изменить:

  1. Я хотел бы видеть мою входную фазу «имя метки» на где я ввел координаты в данные. (Не только синие точки на отдельном рисунке)

  2. Я ввел положительные значения энергии в terndemo.m, как показано ниже. Тем не менее, они фактически являются отрицательными значениями, и когда я ввел отрицательные значения, поверхность не отображается должным образом.

  3. Мне нужно дать ярлык для спектра тепла?

  4. И, наконец, метки на оси не начинаются правильно. Например, 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); 

Here is the image

+0

Есть ли в моем ответе что-то, что вам не нужно? – chthonicdaemon

ответ

0

Я автор ternplot

Вот лучшее, что я могу сделать:

  1. Добавленные ярлыки к графику
  2. Способ, которым я рисую поверхностный график в ternpcolor, затрудняет использование отрицательных значений. Существует решение, которое связано с просмотром рисунка снизу, но я оставлю это для другого вопроса.
  3. Добавлена ​​метка на цветной шкаф
  4. На моих участках ярлыки верны. Убедитесь, что у вас установлена ​​последняя версия.

-

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 

Он выходит, как показано ниже, без ручного редактирования:

Output with no editing

Но с небольшой настройки (на самом деле просто перемещая метки вокруг) это довольно применимо:

Output hand-edited

 Смежные вопросы

  • Нет связанных вопросов^_^