2013-04-16 78 views
1

我想使MATLAB顏色情節類似這樣的情節:如何繪製等邊顏色三角形?

http://1.bp.blogspot.com/-QpFb-Yj_MOg/UA4Tw3xuVVI/AAAAAAAAAIQ/T3kTUT39c-A/s1600/triangular+plot.png

我已成功地創建,以創建頂點所需要的所有的點[X,Y]我有一個用每個頂點的顏色映射,所以我可以得到以下結果。

Correct plot, but wrong axes

但我不明白如何使軸工作。

到目前爲止的代碼:

% Equilateral grid 
tcorner = [0.0, 0.5,   1.0; 
      0.0, 1.0*sqrt(3)/2, 0.0]; 
tg = triangle_grid(1/0.05, tcorner); 
tgx = tg(1,:); 
tgy = tg(2,:); 

% Create triangles 
tri = delaunay(tgx,tgy); 

% Plot 
h = trisurf(tri, tgx, tgy, colorvector); 

和電網功能:

function triangle_grid(n, tcorner) 
    ng = ((n + 1) * (n + 2))/2; 
    tg = zeros (2, ng); 

    p = 0; 

    for i = 0 : n 
     for j = 0 : n - i 
      k = n - i - j; 
      p = p + 1; 
      tg(1:2,p) = (i * t(1:2,1) + j * t(1:2,2) + k * t(1:2,3))/n; 
     end 
    end 
end 
+0

尼斯的問題!你會發布到目前爲止的代碼嗎? – Acorbe

+0

@Acrobe在那裏,你的代碼:) – sehlstrom

+0

而正是你只是想繪製漂亮的對角軸或你有什麼問題嗎? – Acorbe

回答

0

主要的問題是,你不能旋轉軸到合適的位置,因爲一直翻轉到下側。所以,你需要創建它們。

方法如下:

% Equilateral grid 
tcorner = [0.0, 0.5, 1.0; % x 
      0.0, 1.0*sqrt(3)/2, 0.0]; % y 
tg = triangle_grid(1/0.05, tcorner); 
tgx = tg(1,:); 
tgy = tg(2,:); 

% Create triangles 
tri = delaunay(tgx,tgy); 
col = rand(size(tgx)); 
trisurf(tri,tgx,tgy,col) 
view(0,90) 
colormap('lines') 

% setting the axes: 
ax = gca; 
grid off 
ax.YAxis.Visible = 'off'; 
ticks = (0:20:80).'; 

% bottom axis: 
tickpos = linspace(tcorner(1,1),tcorner(1,3),numel(ticks)+1); 
ax.XAxis.FontSize = 14; 
ax.XAxis.TickValues = tickpos(1:end-1); 
ax.XAxis.TickLabels = ticks; 
ax.XAxis.TickLabelRotation = 45; 
xlabel('X axis title'); 

% left & right axis: 
ticksxpos = linspace(tcorner(1,1),tcorner(1,3),numel(ticks)*2+1); 
ticksypos = linspace(tcorner(2,1),tcorner(2,2),numel(ticks)+1); 
text(ticksxpos(numel(ticks)+1:-1:2)-0.03,... % left 
    ticksypos(end:-1:2)+0.03,... 
    num2str(ticks),'FontSize',14,... 
    'VerticalAlignment','bottom',... 
    'HorizontalAlignment','left',... 
    'Rotation',-45) 
text(ticksxpos(end:-1:numel(ticks)+2)+0.05,... % right 
    ticksypos(1:end-1)-0.03,... 
    num2str(ticks),'FontSize',14,... 
    'VerticalAlignment','bottom',... 
    'HorizontalAlignment','right') 
ax.Parent.Color = 'w'; 

% titles: 
text(tcorner(1,2)/2-0.06,tcorner(2,2)/2+0.06,... 
    'Left title','FontSize',14,... 
    'HorizontalAlignment','center',... 
    'Rotation',45) 
text(tcorner(1,2)+tcorner(1,2)/2+0.06,tcorner(2,2)/2+0.06,... 
    'Right title','FontSize',14,... 
    'HorizontalAlignment','center',... 
    'Rotation',-45) 

,我們得到...

tiangular