2017-08-30 93 views
7

我想繪製兩個條形序列,使用相同的y軸。其中一個序列在底部,另一個在頂部(從頂部到底部),y軸分成兩個(一半用於底部條,一半用於頂部條)。底部條使用一種顏色,如綠色,頂部條使用另一種顏色,紅色,而y軸使用軸上每個半色的相應顏色。將條形和反向條繪製到Y軸上

實施例: enter image description here

問題:如何我可以分割在上圖中所示的方式在y軸上?

感謝您的幫助! = D

回答

7

您可以通過分層三個軸並相應地調整their properties來創建此效果。例如:

% The larger left axes: 
hLeft = axes('Position', [0.1 0.1 0.8 0.8], ... % Normalized position 
      'XLim', [0 11], 'YLim', [0 3], ... % Set desired limits 
      'Box', 'off');      % Turn off outline 
hLeft.XLabel.String = 'Time';   % Add an x label 
hLeft.YLabel.String = 'Line';   % Add a y label 
hLeft.Title.String = 'Bar-bar-plot'; % Add a title 
hLine = line(hLeft, 1:10, rand(1,10)+1, 'Color', 'k'); % Plot a sample line 

% The lower right axes: 
hLower = axes('Position', [0.1 0.1 0.8 0.4], ...   % Position over bottom half 
       'XLim', [0 11], 'YLim', [0 1.5], ...  % Set desired limits 
       'YColor', [0 0.5 0], 'Color', 'none', ... % Change colors 
       'YAxisLocation', 'right');     % Position y axis 
hLower.XAxis.Visible = 'off'; % Turn of x axis 
hLower.YLabel.String = 'Bar 1'; % Add a y label 
hold on; 
hBarLower = bar(hLower, 1:10, rand(1,10), ... % A sample bar plot 
       'FaceColor', 'none', 'EdgeColor', [0 0.5 0]); 

% The upper right axes: 
hUpper = axes('Position', [0.1 0.5 0.8 0.4], ...  % Position over top half 
       'XLim', [0 11], 'YLim', [0 1.5], ...  % Set desired limits 
       'YColor', [1 0 0], 'Color', 'none', ... % Change colors 
       'YAxisLocation', 'right', ...   % Position y axis 
       'YDir', 'reverse');      % Reverse y axis 
hUpper.XAxis.Visible = 'off'; % Turn off x axis 
hUpper.YLabel.String = 'Bar 2'; % Add a y label 
hold on; 
hBarUpper = bar(hUpper, 1:10, rand(1,10), ... % A sample bar plot 
       'FaceColor', 'none', 'EdgeColor', [1 0 0]); 

% Add a legend: 
hLegend = legend(hUpper, [hLine hBarLower hBarUpper], ... 
       {'line', 'bar 1', 'bar 2'}, 'Color', 'w'); 

而這裏的情節:

enter image description here

需要通過它左鍵點擊可以定位圖例並將其拖動到最佳點。

+0

哇!這是一個非常優雅和令人難以置信的解釋良好的解決方案。非常感謝你! –

+0

對於那些使用連續日期的人,您必須在每個繪圖之後的不同軸上添加'datetick'命令。例如,假設你先在左軸上繪圖,然後調用'datetick',然後你繼續繪製右下角的軸,然後再次調用'datetick',然後移動到右上軸,你應該再次調用'datetick'。這可確保您的x軸正確對齊。 –

+0

添加一個標題似乎打破了這個數字,圖形被推下,另一個隱藏的圖形出現。 –