2016-11-08 6 views
2

Ich möchte ein ternäres Phasendiagramm basierend auf ab-initio Energieeingängen zeichnen. Dort fand ich ein nützliches Werkzeug, das mir helfen kann:Zeichnen eines ternären Phasendiagramms mit MATLAB

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

Es gibt mehrere Fragen, die ich brauche zu ändern:

  1. Ich mag an meiner Eingangsphase „Namensschilder“ auf der sehen Handlung, wo ich die Koordinaten in Daten eingegeben habe. (Nicht nur blaue Punkte in separater Abbildung)

  2. Ich habe positive Energiewerte in terndemo.m eingegeben, wie unten gezeigt. Trotzdem sind sie tatsächlich negative Werte und wenn ich negative Werte eingegeben habe, wird die Oberfläche nicht richtig angezeigt.

  3. Ich muss ein Etikett für das Wärmespektrum geben?

  4. Zuletzt beginnen meine Achsenbeschriftungen nicht korrekt. Zum Beispiel ist 0 nicht am Kantenpunkt im Dreieck.

Ich habe auch alle Fragen zu der Abbildung beigefügt.

Kann jemand einige Kommentare zu diesen Fragen geben?

--- Hier ist meine demotern.m Eingang:

%% 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

Gibt es etwas in meiner Antwort, das nicht das ist, was Sie brauchen? – chthonicdaemon

Antwort

0

Ich bin der Autor des ternplot

Hier ist das Beste, was ich tun kann:

  1. Zusätzliche Beschriftungen zum Plot hinzugefügt
  2. Die Art, wie ich das Oberflächendiagramm in ternpcolor zeichne, macht es schwierig, negative Werte zu verwenden. Es gibt eine Lösung, die das Betrachten der Figur von unten beinhaltet, aber ich lasse das für eine andere Frage
  3. Eingefügtes Etikett zum colorbar
  4. In meinen Plots sind die Aufkleber korrekt. Überprüfen Sie, ob Sie die neueste Version haben.

-

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 

Es kommt, wie unten heraus ohne manuelle Bearbeitung:

Output with no editing

Aber mit ein wenig Gefummel (wirklich nur die Etiketten bewegen) ist es ganz verwendbar:

Output hand-edited