5

Matlab绘制特殊的图形

 1 year ago
source link: https://blog.51cto.com/domi/5719171
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Matlab绘制特殊的图形

精选 原创

domi+1 2022-09-28 12:30:53 博主文章分类:matlab ©著作权

文章标签 坐标轴 自定义 数据 文章分类 其它 编程语言 yyds干货盘点 阅读数195

1、指定坐标轴刻度值和标签

自定义沿坐标轴的刻度值和标签有助于突出显示数据的特定方面。以下示例说明一些常见的自定义,例如修改刻度值的放置位置、更改刻度标签的文本和格式,以及旋转刻度标签。

1.1、更改刻度值位置和标签

创建 x,将其指定为200个介于-10 和10之间的线性间隔值,创建x的余弦函数 y,绘制数据图。

x = linspace(-10,10,200);y = cos(x);plot(x,y)
Matlab绘制特殊的图形_自定义

更改沿 x 轴和 y 轴的刻度值位置。将这些位置指定为一个由递增值组成的向量。这些值无需等距。此外,还要更改沿 x 轴的每个刻度值关联的标签。并用一个字符向量元胞数组来指定刻度标签。要在标签中包含特殊字符或希腊字母,可使用 TeX 标记,例如用 \pi 表示 π 符号。

xticks([-3*pi -2*pi -pi 0 pi 2*pi 3*pi])xticklabels({'-3\pi','-2\pi','-\pi','0','\pi','2\pi','3\pi'})yticks([-1 -0.8 -0.2 0 0.2 0.8 1])

对于 R2016b 之前的版本,应使用 Axes 对象的 XTick、XTickLabel、YTick 和 YTickLabel 属性设置刻度值和标签。例如,将 Axes 对象赋予一个变量(如 ax = gca)。然后使用圆点表示法设置 XTick 属性,例如 ax.XTick = [-3*pi -2*pi -pi 0 pi 2*pi 3*pi]。对于R2014b之前的版本,应使用 set 函数设置此属性。

1.2、旋转刻度标签

创建散点图并沿每条轴旋转刻度标签。将此旋转指定为一个标量值。正值表示逆时针旋转。负值表示顺时针旋转。

x = 1000*rand(40,1);y = rand(40,1);scatter(x,y)xtickangle(45)ytickangle(90)
Matlab绘制特殊的图形_数据_02

对于 R2016b 之前的版本,使用 Axes 对象的 XTickLabelRotation 和 YTickLabelRotation 属性指定旋转。例如,将 Axes 对象赋予一个变量(如 ax = gca)。然后使用圆点表示法设置 XTickLabelRotation 属性,例如 ax.XTickLabelRotation = 45。

1.3、更改刻度标签格式

创建针状图并将沿 y 轴的刻度标签值显示为美元值。

profit = [20 40 50 40 50 60 70 60 70 60 60 70 80 90];stem(profit)xlim([0 15])ytickformat('usd')
Matlab绘制特殊的图形_坐标轴_03

若要进一步控制格式,请指定一种自定义格式。例如,使用 '%.1f' 在 x 轴刻度标签中显示一个十进制值。使用 '\xA3%.2f' 将 y 轴刻度标签显示为英镑。选项 \xA3 表示英镑符号的 Unicode 字符。有关指定自定义格式的详细信息,请参阅xtickformat函数。

xtickformat('%.1f')ytickformat('\xA3%.2f')

1.4、用于分别控制各个坐标轴的标尺对象

MATLAB为每个坐标轴创建一个标尺对象。与所有图形对象一样,标尺对象也具有可以查看和修改的属性。标尺对象允许进一步分别控制 x 轴、y 轴或 z 轴的格式设置。可以通过 Axes 对象的 XAxis、YAxis 或 ZAxis 属性访问与特定坐标轴关联的标尺对象。标尺的类型取决于坐标轴上的数据类型。对于数值数据,MATLAB 创建 NumericRuler 对象。

ax = gca;

ax.XAxis

  NumericRuler with properties:

             Limits: [0 15]

              Scale: 'linear'

           Exponent: 0

         TickValues: [0 5 10 15]

    TickLabelFormat: '%.1f'

1.5、使用标尺对象控制指数标签中的值

使用介于-15,000 和 15,000之间的 y 值绘制数据图。默认情况下,y 轴刻度标签使用指数记数法(指数值为 4,底数为 10)。将指数值更改为 2。设置与 y 轴关联的标尺对象的 Exponent 属性。通过 Axes 对象的 YAxis 属性访问标尺对象。指数标签和刻度标签会相应地进行更改。

x = linspace(0,5,1000);y = 100*exp(x).*sin(20*x);plot(x,y)ax = gca;ax.YAxis.Exponent = 2;
Matlab绘制特殊的图形_数据_04

​将指数值更改为 0,使刻度标签不使用指数记数法。

ax.YAxis.Exponent = 0;


2、突出显示特定等高线层级

此示例演示如何突出显示特定层级的等高线,在以往的数学建模比赛中经常需要绘制此类图。

将 Z 定义为从 peaks 函数返回的矩阵。

Z = peaks(100);

​对 Z 中的最小和最大数据值四舍五入取整,并分别将这些值存储到 zmin 和 zmax 中。将 zlevs 定义为 40 个介于 zmin 和 zmax 之间的值。

zminzmaxzinc = (zmax - zmin) / 40;zlevs

绘制等高线图。

figurecontour(Z,zlevs)
Matlab绘制特殊的图形_自定义_05

将 zindex 定义为 zmin 与 zmax 之间索引值为 2 的整数值向量。

zindex = zmin:2:zmax;

保留之前的等高线图。创建第二个等高线图并使用 zindex 每隔一个整数值突出显示等高线。将线宽设置为 2。

hold oncontour(Z,zindex,'LineWidth',2)hold off
Matlab绘制特殊的图形_自定义_06

3、按高度为三维条形着色

此示例演示如何根据条形高度为条形着色,以此方式来修改三维条形图。

使用 magic 函数得到数据的三维条形图。在数组 b 中返回用于创建条形图的曲面对象。向图形添加颜色栏。

Z = magic(5);b = bar3(Z);colorbar

 

Matlab绘制特殊的图形_数据_07

对每个曲面对象,从 ZData 属性取得 z 坐标数组。使用该数组设置 CData 属性,该属性用于定义顶点颜色。通过将曲面对象的 FaceColor 属性设置为 'interp' 来插入面颜色。

注意:从 R2014b 开始,可以使用圆点表示法查询和设置属性。如果使用的是早期版本,请改用 get和 set函数,例如 zdata = get(b(k),'ZData')。

for k = 1:length(b) zdata = b(k).ZData; b(k).CData = zdata; b(k).FaceColor = 'interp';end
Matlab绘制特殊的图形_数据_08

每个条形的高度决定了它的颜色。您可以通过对比条形颜色和颜色栏来估算条形的高度。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK