如何使Matlab输出图像坐标轴居中

这篇具有很好参考价值的文章主要介绍了如何使Matlab输出图像坐标轴居中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PS:写在前端,好久没有用CSDN了,现在公司入职,重新拾起社区文化,发扬总结和共享精神。
这个小点源于一位做深度学习的朋友,输出深度学习代表性函数的函数图像,由此找我帮忙找到解决方案。
首先,给出目标图像。
matlab坐标原点设置在正中间,matlab,计算机视觉,开发语言
在这里,MATLAB一般是输出的结果为框线结果显示,需要的是完整的平面直角坐标系,就如同中所示。
First,写一个画图函数 shift_axis_to_origin这个画图函数就是主要实现函数。

function fig_handle = shift_axis_to_origin( axes_handle )
% function: 本函数目的是把 matlab 做的图坐标轴移到图形的原点
% input:
%   axes_handle: 原坐标轴句柄
% output:
%   fig_handle: 把坐标轴移动到原点的图像句柄

figure('Name','shift_axis_to_origin','NumberTitle','off')  % 创建一个新的窗口
fig_handle = copyobj( axes_handle , gcf );  % 拷贝图形到一个新的图像句柄

xL=xlim ;  % 获取x轴取值范围的最小、做大值:xL = [xlim_min,xlim_max]
yL=ylim ;  % 获取y轴取值范围的最小、做大值: yL = [ylim_min,ylim_max]

xt=get(gca,'xtick') ;  % 获取x轴的刻度
yt=get(gca,'ytick') ;  % 获取y轴的刻度

set(gca,'XTick',[],'XColor','w') ;  % 把底部的x轴坐标的刻度去掉并把底边设置为白色
set(gca,'YTick',[],'YColor','w') ;  % 把左边的y轴坐标的刻度去掉并把底边设置为白色

% 把 x 和 y 坐标轴的两个方向各延长 10% (为了视觉上好看)
extend_x = ( xL(2)-xL(1) ) * 0.1 ;
extend_y = ( yL(2)-yL(1) ) * 0.1 ;
xxL = xL + [ -extend_x extend_x] ;
yyL = yL + [ -extend_y extend_y] ;
%重新设定坐标轴的取值范围
set(gca,'xlim', xxL) ;
set(gca,'ylim', yyL) ;

pos = get(gca,'Position') ;  % 获取当前坐标轴的原点坐标和长宽:pos = [bottom,left,width,height]
box off;  % 上边和右边的边框去掉

% 计算原坐标轴到原点在x,y方向上的偏移量
x_shift = abs( yyL(1)/(yyL(2)-yyL(1)) ) ;
y_shift = abs( xxL(1)/(xxL(2)-xxL(1)) ) ;

temp_1 = axes( 'Position', pos + [ 0 , pos(4) * x_shift , 0 , - pos(4)* x_shift*0.99999 ] ) ;  % 把原底部的x轴移动到x=0的位置上
xlim(xxL) ;  % 复制x轴的取值范围
box off ;
set(temp_1,'XTick',xt,'Color','None','YTick',[]) ; %把背景设为透明,并显示x轴刻度
set(temp_1,'YColor','w') ;  %把y轴去掉

temp_2 = axes( 'Position', pos + [ pos(3) * y_shift , 0 , -pos(3)* y_shift*0.99999 , 0 ] ) ;  % 把原左边的y轴移动到y=0的位置上
ylim(yyL) ;  % 复制y轴的取值范围
box off ;
set(temp_2,'YTick',yt,'Color','None','XTick',[]) ; % 把背景设为透明,并显示y轴刻度
set(temp_2,'XColor','w') ;  % 把x轴去掉

Base_pos = get(fig_handle,'Position') ;  %获取当前图像的左下角坐标和长宽:Base_pos = [bottom,left,width,height]
arrow_pos_in_x_dircetion = Base_pos(2) - Base_pos(4) * yyL(1)/(yyL(2)-yyL(1)) ;
arrow_pos_in_y_dircetion = Base_pos(1) - Base_pos(3) * xxL(1)/(xxL(2)-xxL(1)) ;

annotation('arrow',[Base_pos(1) , Base_pos(1)+Base_pos(3)] , [arrow_pos_in_x_dircetion , arrow_pos_in_x_dircetion ] , 'Color','k');
annotation('arrow',[arrow_pos_in_y_dircetion , arrow_pos_in_y_dircetion ] , [Base_pos(2) , Base_pos(2)+Base_pos(4)] , 'Color','k');
end

然后,写一个主函数,在主函数中调用画图的 shift_axis_to_origin函数

close all;clear;clc;

x = -5:0.01:5;
y = x.*tanh(log10(1+exp(x)));
figure;
plot(x,y);
legend('Mish');

shift_axis_to_origin( gca );

即可。文章来源地址https://www.toymoban.com/news/detail-597667.html

到了这里,关于如何使Matlab输出图像坐标轴居中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab隐藏坐标轴/数字/刻度线

    目录 一、隐藏坐标轴的数字 二、隐藏坐标轴的刻度 三、隐藏坐标轴 四、隐藏坐标区 五、修改坐标区背景颜色  六、修改图片背景颜色 一、隐藏坐标轴的数字 以X轴为例,在画图的代码后面增加以下设置: 二、隐藏坐标轴的刻度 三、隐藏坐标轴 四、隐藏坐标区 或者   五、

    2024年01月24日
    浏览(48)
  • Matlab 绘图坐标轴设置,字体,字号等

     本蔬菜发的第一篇,能实现的功能都写到注释里了,谢谢捧场! 绘图结果为:  可见,title被全局设置进行了重置,第二种方法同时设置两种字体,非常Nice

    2024年02月12日
    浏览(45)
  • MATLAB 之 图形对象及其句柄和图形窗口与坐标轴

    MATLAB 的图形系统是面向图形对象的。图形对象是 MATLAB 图形元素的集合,是用于显示图形和设计用户界面的基本要素。 在 MATLAB 中,每一个具体的图形都是若干个不同的图形对象组成的。所有的图形对象都按父对象和子对象的方式组成层次结构,其形式如下图所示。 在图形对

    2024年02月09日
    浏览(48)
  • 【MATLAB基础绘图第9棒】绘制截断坐标轴(Broken Axis)

    有时候,用MATLAB绘制坐标图时会出现有的曲线值都特别大,有的曲线值都很小,但是又想在同一幅图中将他们展示出来,于是需要截断坐标轴的刻度或者改变纵轴的刻度,使其不均匀。此时,就需要对横坐标或纵坐标进行截断。 参考:博客-MATLAB实例:截断坐标轴(Broken Axis)

    2024年02月06日
    浏览(51)
  • Matlab绘图:绘制双坐标轴(双y轴)并设置两个y轴的颜色

    改变颜色有两种方法: 在开头就设置 在对应坐标轴启动的时候分别设置

    2024年02月11日
    浏览(43)
  • Matlab图坐标轴数值负号改为减号(change the hyphen (-) into minus sign (−, “U+2212”))

    在MATLAB中,坐标轴负数默认符号是 - ,如下图所示 可通过以下两语句将负号修改为减号: 或者 示例: 参考链接:change the hyphen (-) into minus sign (−, “U+2212”)

    2024年02月12日
    浏览(40)
  • Origin如何自定义坐标轴的刻度线标签的内容

    如图,想更改红圈内容,在刻度线标签的选项卡内改刻度索引字符串,然后自己输进去

    2024年02月11日
    浏览(51)
  • Python-plt.plot画图坐标轴和图例如何显示希腊字母

    有时候在绘制一些函数图像时,需要坐标轴和图例显示希腊字母,如:α、η…… matplotlib是支持letax代码的,所以只需要在 plt.ylabel() 等语句中输入相应的letax代码即可 如:绘制一个正弦函数,纵坐标为希腊字母“η”(对应letax代码为eta),图例为“α=0.1” 可以表示为:la

    2024年04月14日
    浏览(40)
  • VTK OrientationMarker 方向 三维坐标系 相机坐标轴 自定义坐标轴

    本文 以 Python 语言开发 我们在做三维软件开发时,经常会用到相机坐标轴,来指示当前空间位置; 坐标轴效果: 相机方向坐标轴  Cube 正方体坐标轴  自定义坐标轴: Code: Axes CameraOrientationWidget OrientationMarkerWidget custom OrientationMarker

    2024年02月06日
    浏览(53)
  • Python Axes3D自制坐标轴(没办法俺不知道咋移动坐标轴,但是不移动坐标轴画图太难看了)

       因为很不巧用Axes3D自带的坐标轴画出来图有点丑,首先ticklabels离坐标轴有点远。其次想正负值都能显示。就在想能不能把轴往上移一下,同时拉近ticklabels和坐标轴的距离。    博主主要是发现了用ax.axis(‘off’)或者ax1.set_axis_off()可以达到把坐标轴全部关掉的效果,如下

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包