数据可视化
title: 数据可视化
date: 2019-08-21 08:41:00
tags: matlab
一、图形绘制
1.离散数据及函数
X=1:20;
Y=log(X);
figure(2)
plot(X,Y,'O','MarkerSize',8)% 'O'表示画图的形状,8表示单个图标size
2.连续函数
matlab无法真正实现连续函数可视化,必须将连续函数在一组离散自变量上计算除函数结果
subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。
X1=(0:12)*pi/6;
Y1=cos(3*X1);
X2=(0:360)*pi/180;
Y2=cos(3*X2);
figure(1) %表示建立图形,第几幅图
subplot(2,2,1); %z唉多个图中显示在第几个位置
plot(X1,Y1,'o','MarkerSize',3);
xlim([0 2*pi]); %控制在哪个范围内显示
%figure(2) %表示建立图形,第几幅图
subplot(2,2,2); %z唉多个图中显示在第几个位置 要显示在一个图中就只能有一个figure
plot(X1,Y1,'LineWidth',1); %直线了噢
xlim([0 2*pi]); %控制在哪个范围内显示
subplot(2,2,3);
plot(X2,Y2,'o','MarkerSize',3); %‘O’可换成'-ro'就变成了红色的圈圈构图,
xlim([0 2*pi]);
%gird on % 添加网格线
subplot(2,2,4);
plot(X2,Y2,'LineWidth',1);
xlim([0 2*pi]);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3YsBieF-1588087577562)(http://pvyyuu4id.bkt.clouddn.com/6.png)]
3.其他功能示例
x=-pi/2:0.01:pi/2;
y=x+sin(x)+exp(x);
figure(1)
%subplot(2,1,1);
plot(x,y,'-ro','MarkerSize',1) %红色线
grid on %添加网格线
title('y的函数图像');
xlabel('x');
ylabel('y');
legend('y=x+sinx+e^{x}'); %添加函数标签
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZs3or9Y-1588087577566)(http://pvyyuu4id.bkt.clouddn.com/7.png)]
二、二维图像绘制
1.plot指令规范:
-
plot(x,y)
-
plot(y):y为一维实数数组,以1:n为横坐标
-
plot(z):z为一维负数数组,以横轴为实轴,纵轴为虚轴绘制( real( z(j) ),imag( z(j) ) )
-
plot(A):绘制矩阵A的列对它的下标的图形
A=magic(20); A(9:20,:)=[];%截取1~8行去绘图 figure; plot(A)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UepskgzK-1588087577569)(http://pvyyuu4id.bkt.clouddn.com/8.png)]
-
plot(x,A):矩阵A 对向量x的图形,A:m*n,x长度若为m,则绘制矩阵A的列对向量x的图形,x长度若为n,则绘制矩阵的行对向量x的图形,x可以是行向量或列向量
-
plot(A,x):对矩阵A绘制向量x的图像,其他同上
-
plot(A,B):对矩阵A的行绘制矩阵B的列的图形,如果A和B都是m*n的矩阵,则将绘制n条由m个有序对连成的曲线
for i=1:5 for j=1:6 A(i,j)=i+j; end end A x=0.2:0.2:1; x figure(1) subplot(2,2,1); plot(A,x,'LineWidth',1.5); subplot(2,2,2); plot(x,A,'LineWidth',1.5); B=reshape(1:30,5,6) subplot(2,2,3); plot(A,B,'LineWidth',1.5); subplot(2,2,4); plot(B,A,'LineWidth',1.5);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KE6dtMXK-1588087577575)(http://pvyyuu4id.bkt.clouddn.com/9.png)]
A = 2 3 4 5 6 7 3 4 5 6 7 8 4 5 6 7 8 9 5 6 7 8 9 10 6 7 8 9 10 11 x = 0.2000 0.4000 0.6000 0.8000 1.0000 B = 1 6 11 16 21 26 2 7 12 17 22 27 3 8 13 18 23 28 4 9 14 19 24 29 5 10 15 20 25 30
-
plot(x,y,str):用str指定颜色和线型
-
plot(x1,y1,str1,x2,y2,str2,…)
j=sqrt(-1);% 奥运五环 x=2; y=0.4; bluecircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(j*y-x); blackcircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(j*y); redcircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(j*y+x); yellocircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(-j*y-x/2); greencircle=cos(-pi:pi/20:pi)+j*sin(-pi:pi/20:pi)+(-j*y+x/2); figure(1) plot(bluecircle,'LineWidth',5); hold on; plot(blackcircle,'k','LineWidth',5); hold on; plot(redcircle,'r','LineWidth',5); hold on; plot(yellocircle,'y','LineWidth',5); hold on; plot(greencircle,'g','LineWidth',5);
t=(0:pi/100:pi)'; y1=sin(t)*[-1,1]; y2=sin(t) .*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3) .*sin(9*t3); plot(t,y1,'r:',t,y2,'b',t3,y3,'bo') % ‘bo'横向变成散点O,一共绘制了三条曲线 axis([0,pi,-1,1]) % 设置坐标值范围
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r3U8QfWf-1588087577580)(http://pvyyuu4id.bkt.clouddn.com/10.png)]
2.文字说明:
x=0:0.01*pi:pi*0.5;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'r','LineWidth',5);
hold on;
x=0.5*pi:0.01*pi:pi;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'y','LineWidth',5);
hold on;
x=-pi:0.01*pi:-pi*0.5;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'b','LineWidth',5);
hold on;
x=-pi*0.5:0.01*pi:0;
y=cos(x)+sqrt(-1)*sin(x);
plot(y*2,'g','LineWidth',5);
title('极坐标系');
text([1.5 -3 1.5 -3],[2 2 -2 -2],{'第一象限','第二象限','第三象限','第四象限'})%前面的坐标是用来确定放的位置的
legend({'[0 0.5\pi]','[0.5\pi \pi]','[\pi 1.5\pi]','[1.5\pi 2\pi]'}) % 添加图注
xlim([-5 5]); %x轴上下限设定
ylim([-5 5]);
plot([-4 4],[0 0],'k','LineWidth',3);% 画出横坐标轴
hold on; %保持之前的图像,并可以继续绘制新图像
%hold off; %会刷新当前图像
plot([0 0],[-4 4],'k','LineWidth',3);% 画出纵坐标轴
hold on;
%axis off %取消掉了自带的坐标,这个最后在动,因为上面涉及到的坐标都是根据系统坐标定的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ln6eiJQI-1588087577583)(http://pvyyuu4id.bkt.clouddn.com/11.png)]
3.线型、标记和颜色
(1)线型
线型代号 | 表示线型 |
---|---|
- | 实线 |
– | 虚线 |
-. | 点画线 |
: | 点线 |
none | 无线 |
(2)标记
标记代号 | 表示标记 |
---|---|
. | 点 |
* | 星号 |
square | 正方形 |
diamond | 菱形 |
pentagram | 五角星形 |
hexagram | 六角星形 |
none | 无点 |
o | o |
+ | + |
x | x |
< | 顶点指向左边的三角形 |
> | 指向右边 |
^ | 正三角形 |
v | 倒三角形 |
(3)颜色
颜色代号 | 表示颜色 |
---|---|
g | 绿色 |
m | 品红色 |
b | 蓝色 |
c | 灰色 |
w | 白色 |
r | 红色 |
k | 黑色 |
y | 黄色 |
4.双坐标轴绘制
plotyy(X1,Y1,X2,Y2);
以左右不同的纵轴绘制两条曲线
plotyy(X1,Y1,X2,Y2,Fun);
都以Fun指定的形式绘制
plotyy(X1,Y1,X2,Y2,Fun1,Fun2);
分别以Fun1,Fun2指定形式绘制
5.fplot绘图指令
可以通过matlab平台内部设置的自适应算法动态决定自变量的离散间隔
-
fplot(f,limits)
limits表示为[lx rx]或[lx rx;ly ry] -
fplot(f,limits,LineSpec)
LineSpec表示规定的线型,标记,颜色等 -
fplot(f,limits,tol)
在limits定义的范围内,在tol规定的相对误差范围内,绘制f函数图像 fplot(f,limits,tol,LineSpec)
-
fplot(f,limits,n)
至少绘制n+1个点
6.ezplot绘图指令
用于绘制在某一自变量区域内的图形
-
ezplot(f)
按matlab默认方式(即-2pi<x<2pi)绘制函数 -
ezplot(f,[min,max])
,x方向变量按[min max],y方向变量按默认 ezplot(f,[xmin,xmax,ymin,ymax])
-
ezplot(x,y)
按默认方式绘制函数x,y -
ezplot(x,y,[min,max])
按自变量范围为[min max]
ezplot('sin(x)^2+4*cos(y)^2=4',[-5 5 -1 1]);%函数用' '起来
axis square%让坐标轴呈方形!
7.特殊坐标轴绘图
直角坐标系和极坐标系均为线性刻度
当数据呈指数型变化规律时,用线性刻度无法清晰的表示出低次幂的部分数据,可以通过双坐标绘图,对指数数据进行局部放大。
更简洁的方式是:使用semilogx函数、semilogy函数、loglog函数对对数数据进行处理
-
semilogx函数(使用与plot相同)
semilogx(Y)
semilogx(X1,Y1,X2,Y2,…)
semilogx(X1,Y1,LineSpec1,X2,Y2,LineSpec2…)
semilogx(…,‘PropertyName’,PropertyValue,…)
x=10 .^ (0.1:0.1:4) y=1 ./ (x+1000) figure subplot(1,2,1); semilogx(x,y,'+','MarkerSize',5,'LineWidth',2); title('y=(x+1000)^{-1}') subplot(1,2,2); plot(x,y,'+','MarkerSize',5,'LineWidth',2) title('y=(x+1000)^{-1}')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9uUZRqWL-1588087577587)(http://pvyyuu4id.bkt.clouddn.com/12.jpg)]
x = 1.0e+04 * 1 至 10 列 0.0001 0.0002 0.0002 0.0003 0.0003 0.0004 0.0005 0.0006 0.0008 0.0010 11 至 20 列 0.0013 0.0016 0.0020 0.0025 0.0032 0.0040 0.0050 0.0063 0.0079 0.0100 21 至 30 列 0.0126 0.0158 0.0200 0.0251 0.0316 0.0398 0.0501 0.0631 0.0794 0.1000 31 至 40 列 0.1259 0.1585 0.1995 0.2512 0.3162 0.3981 0.5012 0.6310 0.7943 1.0000
-
semilogy函数
调用格式同上,绘制图形时,y轴采用对数坐标
-
loglog函数
调用格式同上,x,y轴均采用对数坐标
a=0.1:0.1:5; x=log10(a); y=10 .^a; figure subplot(1,2,1); loglog(x,y,'+','MarkerSize',5,'LineWidth',2); title('lgy=10^x'); subplot(1,2,2); plot(x,y,'+','MarkerSize',5,'LineWidth',2); title('lgy=10^x');
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wWgPrJaH-1588087577591)(http://pvyyuu4id.bkt.clouddn.com/13.png)]
8.二维特殊图形绘制
函数名 | 说明 |
---|---|
area | 填充绘图 |
bar | 条形图 |
comet | 彗星图 |
errorbar | 误差带图 |
ezplot | 简单绘制函数图 |
ezpolar | 简单绘制极坐标图 |
feather | 矢量图 |
fill | 多边形填充 |
gplot | 拓扑图 |
compass | 与feather功能类似的矢量图 |
fplot | 函数绘制 |
hist | 柱状图 |
pareto | Pareto图 |
pie | 饼状图 |
plotmatrix | 分散矩阵绘制 |
ribbon | 三维图的二维条状显示 |
scatter | 散射图 |
stem | 离散序列火柴杆状图 |
stairs | 阶梯图 |
rose | 极坐标系下的柱状图 |
quiver | 向量场 |
barh | 水平条形图 |
注意:使用plot的时候,是要界定横坐标范围和刻度的
三、三维和四维图像绘制
plot3(X,Y,Z,'PropertyName',PropertyValue)
,X,Y,Z为同维向量时,绘制以X,Y,Z为x,y,z坐标的三维曲线,是同维矩阵的时候,绘制多条曲线,曲线条数为矩阵列数,PropertyName规定某一属性
注意:plot3
用来表现的是单参数的三维曲线,而非 双参数的三维指令
上一篇: sql UNION ALL用法详解
下一篇: 数据可视化