用matlab绘图时,如何只设定一个轴范围?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用matlab绘图时,如何只设定一个轴范围?相关的知识,希望对你有一定的参考价值。

用plot命令绘图,只想设定x轴的范围,而y轴的范围确是不确定的,请问用什么命令比较好?
例如:y=f(x)函数非常复杂,y的范围非常不确定,只期望观察到x在1.7到2.3之间的y值。
请问如何编程,用什么命令较好?请大家不吝赐教,谢谢!

用matlab绘图时,只设定一个轴范围可以通过以下方法来实现:

使用 axis([XMIN XMAX YMIN YMAX]) ,对于不需要设置范围的轴,使用参数-inf,inf,即正负无穷之间

示例代码:

>> x = 1:10;

>> y = x.^2;

>> subplot(3,1,1)

>> plot(x,y,'r')

>> subplot(3,1,2)

>> plot(x,y,'g')

>> xlim([0,15])

>> subplot(3,1,3)

>> plot(x,y,'b')

>> axis([-1,12,-inf,inf])

绘图结果:

例子1:

y=f(x)函数非常复杂,y的范围非常不确定,只期望观察到x在1.7到2.3之间的y值。

xlim([1.7 2.3])

clc;clear

x=0:pi/20:2*pi;

y=sin(x);

plot(x,y)

xlim([ -pi 2*pi])

例子2:

有一个1*10000的矩阵X,需要把它画出来。要求是每一百点给出一个坐标刻度,刻度为y1,y2,y3,.....,y100

也就是:X(1)到X(100)画出在坐标轴的X(1)位置标出y1

X(101)到X(200)画出在坐标轴的X(101)位置标出y2

X(201)到X(300)画出在坐标轴的X(201)位置标出y3

......

X(9901)到X(10000)画出在坐标轴的X(9901)位置标出y100

clear,clc

t = 1:1:100;

y = sin(0.1*t);

plot(t,y)

set(gca,'XTick',1:20:100,'XTickLabel',1:20:100)

扩展资料:

MATLAB系统由MATLAB开发环境、MATLAB数学函数库、MATLAB语言、MATLAB图形处理系统和MATLAB应用程序接口(API)五大部分构成。

开发环境

MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。

数学函数

MATLAB数学函数库包括了大量的计算算法。从基本算法如四则运算、三角函数,到复杂算法如矩阵求逆、快速傅里叶变换等。

语言

MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用这种语言能够方便快捷建立起简单运行快的程序,也能建立复杂的程序。

图形处理

图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维三维图形函数、图像处理和动画显示等函数。

程序接口

MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran等其它高级编程语言进行交互的函数库。该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其它应用程序间建立客户、服务器关系。

参考技术A

1、首先打开matlab绘图,这个程序绘图的结果y轴坐标范围不好,需要设定一个轴的范围。

2、用二维的话,则输入命令【axis([xmin xmax ymin ymax])】。

3、用三维的话,则输入命令【axis([xmin xmax ymin ymax zmin zmax])】。

4、将这个语句添加到plot作图语句后面来设置,如图所示。

5、这样,就设定一个轴范围了,图形全部在坐标轴范围内,是x最小,xmax是x最大。

参考技术B

用matlab绘图时,只设定一个轴范围可以通过以下方法来实现:

使用 axis([XMIN XMAX YMIN YMAX]) ,对于不需要设置范围的轴,使用参数-inf,inf,即正负无穷之间

示例代码:

>> x = 1:10;

>> y = x.^2;

>> subplot(3,1,1)

>> plot(x,y,'r')

>> subplot(3,1,2)

>> plot(x,y,'g')

>> xlim([0,15])

>> subplot(3,1,3)

>> plot(x,y,'b')

>> axis([-1,12,-inf,inf])

绘图结果:

扩展资料

在MATLAB中显示图像(影像)的直方图时,横轴范围往往是[0,255]。在显示的时候,默认显示的范围往往大于这个范围,大出的的范围没有实际意义。

如果使用: axis([XMIN XMAX YMIN YMAX]) 就必须要知道YMIN和YMAX,因为axis对其参数的维数的要求是4、6或8;但对于图像的直方图,其纵轴范围往往不确定,所以横轴范围应该单独设定: xlim([XMIN XMAX]) 同理,在其他情况下,可以使用ylim、zlim.

一般会用axis([XMIN,XMAX,YMIN,YMAX]),但是假如只想对一个坐标轴如X轴或Y轴或Z轴设定范围, 可以使用一下数据:

xlim([XMIN,XMAX]);%对X轴设定显示范围 

ylim([YMIN,YMAX]);%对Y轴设定显示范围 

zlim([ZMIN,ZMAX]);%对Z轴设定显示范围 

例如:数字图像灰度统计图

% 数据生成及展示(真实情况可以用数字图像代替)

set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove');

%每次使用记得清除上次设置的参数,否则设置的参数会被保留下来

x=1:255;y=rand(1,255);y=y';%y是行向量还是列向量都可以

n=length(x);

stem(x,y, 'Marker', 'none');

title('未设置坐标轴的区间','fontsize',14);

参考资料来源:百度百科 - MATLAB

参考技术C

1.同时设置subplot的多幅图像的axis

peaks;

axis tight %Set the axis limits to equal the range of the data

axis square

axis 'auto x' //x轴坐标上下限自动调整

axis off %Plot a surface without displaying the axes lines and background.

set(gca,'Visible','off'); //消除坐标轴,显示范围的大小没有改变,同上句

tmp = gca;

tmp.XAxis.Visible = 'off'; //隐藏X轴的

//上面一句也可以隐藏Ticks,同时Box的上端也隐藏了,这就使得图像看上去不太好看

tmp.XTick= []; //这一句可以只隐藏Ticks

//更多特性可参考Matlab帮助文档,查找"Axes Properties"

//Create a figure with two subplots.set the axis limits for the subplots to the same values.

x1 = linspace(0,10,100);y1 = sin(x1);

ax1 = subplot(2,1,1);plot(ax1,x1,y1)

x2 = linspace(0,5,100);y2 = sin(x2);

ax2 = subplot(2,1,2);plot(ax2,x2,y2);

axis([ax1 ax2],[0 10 -1 1])

2.在原图上继续作图,而不改变原坐标系的区间

x = linspace(0,10);y = sin(x);plot(x,y)

y2 = 2*sin(x);hold on

axis manual %关键步骤,冻结axis 可以对比不加该语句的结果

plot(x,y2);hold off

3.改变坐标系的方向(指向)

C = eye(10); pcolor(C);

colormap summer

//Reverse the coordinate system so that the y values increase from top to bottom.

axis ij; //第i行,第j列

//上下两条语句等价

set(gca,'Ydir','reverse');

//y轴默认是指向上的

实际应用:结合axis,axes,colorbar等工具,制作一个数字图像灰度统计图。

//数据生成及展示(真实情况可以用数字图像代替)

set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove');

//每次使用记得清除上次设置的参数,否则设置的参数会被保留下来

x=1:255;y=rand(1,255);y=y';//y是行向量还是列向量都无所谓

n=length(x);

stem(x,y, 'Marker', 'none');

title('未设置坐标轴的区间','fontsize',14);

4.坐标轴区间的自动设置(适用于直方图的显示)

//Get x/y limits of axes using axis

hist_axes = gca;

limits = axis(hist_axes);

if n ~= 1 //当只有一个值时设置x坐标轴

limits(1) = min(x);

else

limits(1) = 0;

end

limits(2) = max(x);

var = sqrt(y'*y/length(y));

limits(4) = 2*var; //只改变了y轴显示的高度

axis(hist_axes,limits);

title('设置了的坐标轴区间','fontsize',14);

5.改变图像的位置,宽和高,隐藏X轴的标注

// In GUIDE, default axes units are characters. In order for axes repositiong

// to behave properly, units need to be normalized.

hist_axes_units_old = get(hist_axes,'units');

set(hist_axes,'Units','Normalized');

//隐藏X轴的标注

//hist_axes.XAxis.Visible = 'off';

//上面一句也可以隐藏Ticks,同时Box的上端也隐藏了,这就使得图像看上去不太好看

//下面这一句可以只隐藏Ticks;

hist_axes.XTick= [];

//Get axis position and make room for others.

pos = get(hist_axes,'pos');

set(hist_axes,'pos',[pos(1) 0.15 pos(3) 0.75])

set(hist_axes,'Units',hist_axes_units_old); //坐标向上移动了,相应也调整了整个图众向比例

title('移动了的坐标原点','fontsize',14);

//设置ColorBar

c = colorbar('position',[pos(1) 0.1 pos(3) 0.05], 'location','southoutside');

c.Ticks= 0:0.125:1;

c.TickLabels = ceil((0:0.125:1)*255); //使用floor函数,Ticks与真实值似乎有偏差

c.Box = 'off'; //取消显示ColorBar的框框,这样使ColorBar的上框线看起来不粗

c.TickDirection = 'both';

colormap gray;

//colorbar最左下角点的横坐标、纵坐标、宽度、高度

title('一个灰度统计图的绘制就完成了','fontsize',14);

参考技术D

1、首先打开matlab绘图,这个程序绘图的结果y轴坐标范围不好,需要设定一个轴的范围。

2、用二维的话,则输入命令【axis([xmin xmax ymin ymax])】。

3、用三维的话,则输入命令【axis([xmin xmax ymin ymax zmin zmax])】。

4、将这个语句添加到plot作图语句后面来设置,如图所示。

5、这样,就设定一个轴范围了,图形全部在坐标轴范围内,是x最小,xmax是x最大。

扩展资料

强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本参数就能得到所需图形,这类函数称为高层画图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层画图操作。

这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,能够通过句柄对该图形元素进行操作,而不影响其它部分。

在绘制图形时,Matlab能够自己主动依据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清楚的显示出来。所以,普通情况下用户不必选择坐标轴的刻度范围。可是,假设用户对坐标不惬意,能够利用axis函数对其又一次设定。

其调用格式为:

axis([xmin xmax ymin ymax zmin zmax])

假设仅仅给出前四个参数,则依照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。假设给出了所有参数,则绘制出三维图形。

axis函数的功能丰富,其常常使用的使用方法有:

axis equal :纵横坐标轴采用等长刻度

axis square:产生正方形坐标系(默觉得矩形)

axis auto:使用默认设置

axis off:取消坐标轴

axis on :显示坐标轴

还有:给坐标加网格线能够用grid命令来控制,grid on/off命令控制画还是不画网格线,不带参数的grid命令在两种之间进行切换。

给坐标加边框用box命令控制。和grid一样使用方法

放大绘图轴自定义区域MATLAB 代码

用于放大绘图轴自定义区域的 MATLAB 代码。

主要特点

  • 易于使用的 API
  • 独立模块参数设置(轴、矩形、线)
  • 可定制的连接线方向

如何使用

简单演示

% Magnification of the customized regions of the plot's axis.
clc
clear
close all

% data
x = linspace(-0.1*pi,2*pi, 30);
y = cell(1, 3);
y{1, 1} = 0.4*sinc(x)+0.8;
y{1, 2} = tanh(x);
y{1, 3} = exp(-sinc(x));

%% main axes
figure
color_ = [0, 114, 189; 126, 47, 142; 162, 20, 47]/255;
axes1 = axes('Units', 'normalized');
hold(axes1, 'on');
box(axes1,'on');
set(axes1, 'LineWidth', 1.2, 'TickDir', 'in');
for i = 1:3
    plot(x, y{1, i}, 'Parent', axes1, 'Color', color_(i, :), 'LineWidth', 3)
end
legend(axes1, 'line-1', 'line-2', 'line-3')

%% new axes
% parameters of axes
parameters = struct('axesPosition', [0.6, 0.1, 0.2, 0.4],...
                    'zoomZone', [1.5, 2.5; 0.6, 1.3],...
                    'lineDirection', [1, 2; 4, 3]);
                
%% plot
zp = BaseZoom();
zp.plot(parameters)

 

关于参数

轴位置

将axisPosition 指定为数据单位中形式为[xywh] 的四元素向量。x 和 y 元素确定位置,w 和 h 元素确定大小。该函数绘制到当前坐标区而不清除坐标区中的现有内容。

变焦区

zoomZone 是一个 2×2 矩阵,表示矩形框的坐标。第一行的x_start 和x_end 是缩放区域的x 坐标起点和终点,第二行的y_start 和y_end 是缩放区域的y 坐标起点和终点。

线路方向

缩放区域的矩形框通过连接线连接到子坐标系。矩形框和子坐标系的四个角分别为1、2、3、4。对应的四个角分别为右上、左上、左下、右下。下图显示了几种常见情况的方向设置:

 

以第一组为例:矩形框的右下角(4)连接子坐标系的左下角(3),矩形框的右上角(1)连接子坐标系的左下角(3)次坐标系左上角(2),所以方向参数为[1, 2; 4, 3]。

特性

可以在文件--“BaseZoom.m”中编辑轴、矩形、线的参数

 

    properties
        %
        axes1
        axes2
        rectangle
        XLimNew
        YLimNew
        mappingParams
        
        % parameters of inserted axes
        axes2Box = 'on'
        axes2BoxColor = 'none'
        axes2BoxLineWidth = 1.2
        axes2TickDirection = 'in'
        
        % parameters of inserted rectangle
        rectangleColor = 'k'
        rectangleFaceColor = 'none'
        rectangleFaceAlpha = 1
        rectangleLineStyle = '-'
        rectangleLineWidth = 0.8
        
        % parameters of inserted line
        boxLineStyle = ':'
        boxLineColor = 'k'
        boxLineWidth = 1
        boxLineMarker = 'none'
        boxLineMarkerSize = 6
    end

 例如,将矩形框更改为宽度为 2 的红色虚线:

        % parameters of inserted rectangle
        rectangleColor = 'r'
        rectangleFaceColor = 'none'
        rectangleFaceAlpha = 1
        rectangleLineStyle = ':'
        rectangleLineWidth = 2

例如,更改子坐标系的框和缩放方向:

        % parameters of inserted axes
        axes2Box = 'off'
        axes2BoxColor = 'none'
        axes2BoxLineWidth = 1.2
        axes2TickDirection = 'out'

 

 例如,将连接线更改为宽度为 2 的红色虚线:

        % parameters of inserted line
        boxLineStyle = ':'
        boxLineColor = 'r'
        boxLineWidth = 2
        boxLineMarker = 'none'
        boxLineMarkerSize = 6

 

 获取完整代码:https://ai.52learn.online/code/111

 

以上是关于用matlab绘图时,如何只设定一个轴范围?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB中如何设定坐标范围

matlab 双y轴绘图能否多条线跟你共用一个y轴?

通过将数字分组到一个范围内在 matlab / octave 中绘图

matlab 定义坐标轴显示范围

如何在 Matlab 绘图中插入两个 X 轴

用Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围