Moving the cross point of vertical and horizontal axes to (0,0)

6 ビュー (過去 30 日間)
Kourosh
Kourosh 2016 年 7 月 2 日
コメント済み: dpb 2016 年 7 月 17 日
Hello,
Does any body know that in plotting figures, how I can move the cross point of vertical and horizontal axes to (0,0)? I have figures and the horizontal and vertical axes always cross in the lowest left of the figures. How to move this point to (0,0)?
Regards,
Kourosh

回答 (2 件)

dpb
dpb 2016 年 7 月 2 日
If have recent version there's now a 'center' value on the position properties. If using earlier release, just answered a short time ago-- <how-to-shift-xaxis-location-to-origin-0>
It only does the one axis, but the pattern to follow for the other should be obvious...
  3 件のコメント
Kourosh
Kourosh 2016 年 7 月 17 日
編集済み: dpb 2016 年 7 月 17 日
Hi dpb,
Thanks for the answer. My Matlab is R2011b so I think I should shift the axes through your code. I tried it for both axes but there is something wrong. Could you check where I make a mistake? Many thanks.
hAx=axes; % a new axes
plot (X,Y) % plot the data...
yl=ylim; % get y-axis limits
xl=xlim % get x-axis limits
pos=get(hAx,'position'); % and axes position vector
yrat=yl(end)/(yl(end)-yl(1)); % fractional position of origin relative y range
yht=yrat*pos(4); % adjusted second axes height
pos(2)=pos(2)+pos(4)-yht; % new bottom is top position {pos(2)+pos(4)} less height
pos(4)=yht; % and new height into vector
xrat=xl(end)/(xl(end)-xl(1)) % fractional position of origin relative x range
xht=xrat*pos(3) % adjusted second axes height
pos(1)=pos(1)+pos(3)-xht % new left is right position {pos(1)+pos(3)} less width
pos(3)=xht % and new width into vector
hAx(2)=axes('position',pos,'color','none'); % second axes with this position an no color
hAx(1)=axes('position',pos,'color','none') % first axes with this position an no color
set(hAx(2),'ytick',[]) % clear unwanted ticks from showing...
set(hAx(1),'xticklabel',[]) % clear labels on first x-axis
linkaxes(hAx,'x') % and synchronize x-axes
dpb
dpb 2016 年 7 月 17 日
If you move both x- and y-, I'd overlooked you'll need four axes, not just two to cover the ranges (one for each quadrant). At that point it's probably better to either upgrade or use IA's solution of drawing the axes manually instead.

サインインしてコメントする。


Image Analyst
Image Analyst 2016 年 7 月 2 日
I don't know how. But it's easy to draw lines there.
line(xlim, [0,0], 'LineWidth', 2, 'Color', 'k');
line([0,0], ylim, 'LineWidth', 2, 'Color', 'k');
Removing tick marks and labels and moving them to those new axes you just drew would be more complicated. Perhaps just having the thick lines for the axes would be good enough.

カテゴリ

Help Center および File ExchangeGeographic Plots についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by