图形化
- 用plot举例
- 直方图histogram
- 条形图bar和barh
- 饼状图pie
- 极坐标polarplot和polarscatter
- 三维图像
- plot3
- surfc
- meshc
- contour3
- contour
- contourf
用plot举例
x1 = linspace(0,5);
y1 = sin(4*x);% 在一张画布上生成特定个数的子图像
% 第一个参数横向几个子图
% 第二个参数纵向几个子图
% 第三个参数画布的第几个子图
% 返回当前图对象
ax1=subplot(1,1,1)% 使多个图像在同一张图片上,如果没有,后来的图像会取代前面图片
hold on% x:横轴,y:纵坐标值
plot(x1,y1,...'r-o',... %是线条颜色和类型及标签类别其顺序自由'LineWidth',2,... %线条宽度'MarkerSize',2,... %标签大小'MarkerEdgeColor','b')%标签颜色plot(x1+1,y1,':b*');
hold off% 给指定图添加图例,ax1可省略,表示给当前对象添加图例
legend(ax1,{'redtest','bluetest'},... % 图例名称'FontSize',4,... % 图例大小'Location','northwest',... % 图例位置'NumColumns',1) % 图例列数%*************XY轴相关设置***********
%设置标题
title('plottest')%当前子图xy轴标签
xlabel('x1');
ylabel('y1')% 指定当前图显示的刻度
xticks([0 1 2 3 4 5 6])
yticks([-2 -1 0 1 2])%*************标签设置*************
ax = gca; % 获取标签对象
ax.FontSize = 10; % 指定标签大小
ax.TickDir = 'out'; % 定位线在外侧,一般默认
ax.TickLength = [0.02 0.02]; %定位线长度,一般默认
ax.YLim = [-2 2]; %指定Y轴显示数据范围
ax.XLim = [-2 7] %指定X轴显示数据范围%*************设置内部文本************str='$$ \int_{0}^{2} x^2sin(x)e^3 dx $$'; %示例并不与图像对应% 添加表达式
% 前两个参数时文本左端起始位置
% str文本内容,后两个参数为特定显示格式与str$$格式对应
text(-1.5,-1.2,str,'Interpreter','latex');% 添加箭头,X后是起始和终止横坐标,Y是起始和终止纵坐标
annotation('textarrow','X',[0.25,0.3],'Y',[0.3,0.35]);%***************底板设置(背景)**********
fig = gcf;
fig.Color = [0 0.5 0.5];%底版颜色(相对的RGB)
grid on % 开启粗网格
grid minor %开启细网格
%grid off 关闭当前图的网格% **************设置图片型状************
%axis norma 一般使用默认
%axis square
%axis equal********************保存***************
saveas(gcf,'test','png')%第一个参数保存图片的底板,第二个:文件名,第三个:文件后缀
XY轴,底板,文本,标签均和该例子相似,不在赘述
直方图histogram
y=randn(1,1000);
subplot(1,2,1)
% 直方图,
% 第一个参数:数据
% 第二个参数,分成几条,
% 注意第二个参数应该最好是数据最大值减最小值的整数倍,否则有偏差
h=histogram(y,30);% 'BinWidth',num1,... 每条宽度%'BinLimits',[start,end]... 显示范围%'FaceColor','auto', 内部颜色% 'EdgeColor', [0 0 0] 边缘颜色%这些参数均可通过h对象调用disp(h.Values) %每一条的样本数量
disp(h.NumBins) %条的个数
disp(h.BinEdges) %每一条的边缘
% h.NumBins=100 也可以通过这种调用赋值的形式改变其中的参数
% h.FaceColor='r' 改变颜色subplot(1,2,2)
%直方图可生成概率密度函数的估计值
h=histogram(y,30,'Normalization','pdf');
x=-2.5:0.1:2.5
mu = 0;
sigma = 1;
f = exp(-(x-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi));
hold on
plot(x,f,'LineWidth',1.5)savefig('histogram.fig');
s = openfig('histogram.fig');
h = findobj(h, 'type', 'histogram')
%这时的h就和原始histogram创建时返回相同对象
条形图bar和barh
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
subplot(2,2,1)
b=bar(y,'g','LineWidth',1.5) %指定颜色
b.FaceColor = 'flat'; %将该参数设置为flat就可以调用CData,使之运行
b.CData(2,:) = [.5 0 .5]; %将第二条所有高度均设置为指定颜色subplot(2,2,2)
% 若是多维矩阵,则每一个行向量就是一组
% 每一纵列就是一组相同性质的数据
y=[1 2 3 4 ;4 3 2 1;6 4 3 2 ]
bar(y)subplot(2,2,3)
% stacked为矩阵中的每一行显示一个条形。每个条形的高度是行中各元素之和。
bar(y,'stacked')subplot(2,2,4)
% 三维条形图
bar3(y)
barh:
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
subplot(1,1,1)
barh(y)
饼状图pie
subplot(2,1,1)
X = [1 3 0.5 2.5 2];
% 注意是{},区别于explode
labels = {'aa','bb','cc','dd','ee'};
explode = [1 1 0 0 0]; %爆炸,是否出饼图,只有1和0
pie(X,explode,labels) %有标签时,百分比自动缺失,后解决该问题subplot(2,1,2)
X = categorical({'North','South','North','East','South','West'});
explode = {'North','South'};
pie(X,explode)% 自动计算百分比
pie添加自定义文本和百分比
subplot(1,1,1)
X = [1 3 0.5 2.5 2];
h=pie(X);
hText = findobj(h,'Type','text');
txt = {'aaaaa ';'bbbbb ';'ccccc ';'ddddd';'eeeee'};
percentValues = get(hText,'String');
combinedtxt = strcat(txt,percentValues); %百分比和名称结合oldExtents_cell = get(hText,'Extent');
oldExtents = cell2mat(oldExtents_cell); % 获取饼图文本对象%填充
hText(1).String = combinedtxt(1);
hText(2).String = combinedtxt(2);
hText(3).String = combinedtxt(3);
hText(4).String = combinedtxt(4);
hText(5).String = combinedtxt(5);
极坐标polarplot和polarscatter
figure
ax1 = subplot(2,1,1,polaraxes);%注意创建子图时最后有一个参数
theta = linspace(0,2*pi,50);
rho = sin(theta).*cos(theta);
polarplot(ax1,theta,rho) % theta为角度,rho为长度ax2 = subplot(2,1,2,polaraxes);
polarscatter(theta,rho)
三维图像
三维图像的标签设置以及其他参数和二维基本相同,只是把xy的位置换成z
plot3
t = 0:pi/50:10*pi;
st = sin(t);
ct = cos(t);
plot(st,ct,t)
surfc
x = -2:0.25:2;
[X,Y] = meshgrid(x,x); %创建-2到2的格子,返回X为格子中所有点的横坐标,返回Y为格子中所有点的纵坐标 % 计算高度
Z = X.*exp(-X.^2-Y.^2);
surfc(X,Y,Z) % 通过XY对应的横纵坐标以及Z值,确定点的高度
图中的交叉点就是XY对应的坐标,surfc会根据点的Z值定周围方格的颜色,每一份方格颜色是唯一的。
三维结果图:
meshc
x = -2:0.25:2;
[X,Y] = meshgrid(x,x);
Z = X.*exp(-X.^2-Y.^2);
meshc(X,Y,Z)
没有填充颜色的surfc函数
contour3
x = -2:0.25:2;
[X,Y] = meshgrid(x,x);
Z = X.*exp(-X.^2-Y.^2);
hold on
contour3(X,Y,Z,30) % 第四个参数是线条数
图中每一条都是一个封闭图线:
contour
二维图展示三维效果
x = -2:0.25:2;
[X,Y] = meshgrid(x,x);
Z = X.*exp(-X.^2-Y.^2);
contour(X,Y,Z)
contourf
x = -2:0.25:2;
[X,Y] = meshgrid(x,x);
Z = X.*exp(-X.^2-Y.^2);
contourf(X,Y,Z) % 有填充的contour