Graph a scatter plot on top of a bar graph with different x- and y-axes

10 次查看(过去 30 天)
I need to plot a scatter plot on top of a bar graph. Each of the two plots has both a different x-axis and y-axis. I tried using the instructions for using "Multiple X- and Y-Axes" on Matlab's site to no avail. Here's the code I used:
hl1 = bar(barData', 'stacked');
xlim([0 900]);
ylim([0 1]);
ylabel('Percent of watershed land area');
ax1 = gca;
set(ax1, 'XColor', 'r', 'YColor', 'r');
ax2 = axes('Position', get(ax1, 'Position'), 'XAxisLocation', 'top', ...
'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'k', 'YColor', 'k');
hl2 = scatter(POLN_PLOT, COST_PLOT, 'filled', 'Parent', ax2);
When I run the code, the first graph (bar graph) gets overwritten by the second graph (scatter plot). Both the red and black axes appear on top of one another. What I want is for the black axis to appear at the right and on the top of the plot.
I'm not experienced with using handles or properties, so I was hoping someone might be able to show me the best way to go about this. Thanks in advance!

回答(1 个)

Carson
Carson 2011-7-21
Nevermind - I figured it out myself. You just have to add a few hold() statements:
bar(barData', 'stacked');
xlim([0 900]);
ylim([0 1]);
ylabel('Percent of watershed land area');
ax1 = gca;
set(ax1, 'XColor', 'r', 'YColor', 'r');
hold(ax1, 'all'); % <--------------------------------
ax2 = axes('Position',get(ax1,'Position'),'XAxisLocation','top',...
'YAxisLocation','right','Color','none','XColor','k','YColor','k');
hold(ax2, 'all'); % <--------------------------------
scatter(POLN_PLOT, COST_PLOT, 'filled', 'Parent', ax2);
Hope this helps someone else out and saves them some time!
  4 个评论

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Discrete Data Plots 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by