Problem with plotting two x-Axes and y-Axes
    5 次查看(过去 30 天)
  
       显示 更早的评论
    
Dear all,
Here is my plot:

I want to convert it to something like this picture below that I found on google:

Here is my code: I want to plot, plot() and area() as regular and plot bar() like the picture above (inverse)
h = plot(t);
set(h,'linewidth',1);
set(gca,'xtick',1:12,...
    'xticklabel',{'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'});
newcolors = ['#77AC30'; '#0072BD';'#D95319';'#7E2F8E';'#EDB120';'#4DBEEE';'#A2142F'];
colororder(newcolors);
set(0,'DefaultLegendAutoUpdate','off');
box on
grid on
xlim([1 12]);
ylim([0 70]);
xticks(1:12);
hold on 
hh = area(Obs,'LineStyle','none');
hh.FaceAlpha = 0.4;
hh.FaceColor = 	[0 0 0];
set(gca, 'YGrid', 'off', 'XGrid', 'off')
%VVVVV % HERE is second plot % VVVV
hold on % plot bar chart
cc = bar(t);
I tried:
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
    'XAxisLocation','top',...
    'YAxisLocation','right',...
    'Color','none');
But it isn't accomplished well.
Thank you all.
2 个评论
  Tommy
      
 2020-4-29
				Rather than setting 'XAxisLocation' to 'top', what happens if you set 'YDir' to 'reverse'?
采纳的回答
  Adam Danz
    
      
 2020-4-29
        Use yyaxis to plot the plot() and area() on the left axis and the bar() on the right axis.  Then flip the direction of the right axis as Tommy recommended.  It will look something like this. 
yyaxis left
hold on
plot(. . .)
area(. . .)
yyaxis right
hold on
bar(. . .); 
set(gca, 'YDir', 'reverse')
If you need any help implementing that, show me what you've got and I can help straighten it out. 
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




