数据分布图学习笔记~

        本文主要在阅读了《MATLAB程序设计:重定义科学计算工具学习方法》一书之后,对作者在原书所提到的绘图方法做了总结,具体数据分布图详见如下:

1、 饼状图

1.1一维饼图pie()

      

clc,clear all;
%% 饼图
a = [1, 3, 0.5, 2.5, 2];
labels = {'A1', 'A2', 'B1', 'B2', 'C' };%准备标签名称
e = zeros(size(a)); % 准备隔离向量;zeros创建全零数组
e(4) = 1;%将色块4隔离
p = pie(a,e)%绘制饼图
%将标签名称接入百分比
for i = 2:2:2*length(a)
    p(i).String = [labels{i/2},'(',p(i).String,')'];
end
p(7).EdgeColor = 'none';%除去色块4的边线
p(7).FaceColor = [0.39,0.38,0.07];%修改色快4的颜色
[p(1:2:9).EdgeAlpha] = deal(0.2);%修改所有色块颜色的边线透明度

1.2 三维饼图pie3()

clc,clear all;
%% 饼图
a = [1, 3, 0.5, 2.5, 2];
labels = {'A1', 'A2', 'B1', 'B2', 'C' };%准备标签名称
e = zeros(size(a)); % 准备隔离向量;zeros创建全零数组
e(4) = 1;%将色块4隔离
p = pie3(a,e)%绘制饼图
%将标签名称接入百分比
for i = 4:4:2*length(a)
    p(i).String = [labels{i/2},'(',p(i).String,')'];
end
p(7).EdgeColor = 'none';%除去色块4的边线
p(7).FaceColor = [0.39,0.38,0.07];%修改色快4的颜色
[p(1:2:9).EdgeAlpha] = deal(0.2);%修改所有色块颜色的边线透明度

2、柱状图

2.1 一维柱状图 bar()

clc,clear all;
x = categorical({'A', 'B', 'C', 'D'});
y = [2 2 3;2 5 6;2 8 9; 2 11 12];
ax(1) = subplot(1,2,1)
ax(2) = subplot(1,2,2)
bar(ax(1), x, y)
bar(ax(2), x, y, 'stacked')
[ax.YGrid] = deal('on')%所有坐标区均打开Y向网络
axis(ax, 'square')%所有坐标区均为正方形

2.2 水平绘制柱状图  barh()

2.3 三维柱状图 bar3()

2.4 水平绘制三维柱状图bar3h()

3、直方图

clc,clear all;
x = randn(1000, 1)
y = 1 + randn(2000,1)
nbins = 50;%设置条组(bin)的数量
h(1) = histogram(x, nbins)
hold on
h(2) = histogram(y, nbins)
hold off
%设置所有调组的边线透明度
[h.EdgeAlpha] = deal(0.4)

4、离散数据图

4.1 散点图

clc,clear all;
theta = linspace(0,1,60)
a = linspace(20, 100, 6)
for i=1:6
    ax(i) = subplot(2, 3, i)
    x = exp (theta).*sin(a(i)*theta)
    y = exp (theta).*cos(a(i)*theta)
    %颜色向量:线性均匀分布
    c = linspace(0,1,length(theta))
    %设置颜色方案为秋天
    colormap  autumn
    s = scatter(ax(i),x,y,15,c,'filled')
    axis off
    axis square
    %对每个子图打印标题
    title(ax(i),['\alpha=',num2str(a(i))])
end

4.2 直方散点图

clc,clear all;
% 加载软件自带的汽车数据
load carsmall
% 建立表,包含马力/油耗/缸数
% MPG(miles per gallon):每库仑行驶的英里数
t = table(Horsepower,MPG,Cylinders)
% 绘图,以马力油耗作为横/纵坐标
s = scatterhistogram(t,'Horsepower','MPG');
% 以缸数作为组分类依据值
s.GroupVariable = 'Cylinders'
% 将直方图显示类型设置为光滑
s.HistogramDisplayStyle = 'smooth'
% 设置合适点的尺寸
s.MarkerSize = 8;
s.LineWidth = 2;

4.1 矩阵散点图

clc,clear all;
%% 矩阵散点图
n = 18;
% 同时对x和y预分配
[x, y] = deal(zeros(n, 3));
x(:,1) = linspace(1,10,n);
x(:,2) = logspace(1,10,n);
x(:,3) = rand(n,1);
y(:,1) = 2*linspace(1,10,n);
y(:,2) = 1+logspace(1,10,n);
y(:,3) = x(:,3);
%矩阵散点图返回值
[S, AX, BigAx, H,HAx] = plotmatrix(x, y);
% 所有点的尺寸
[S.MarkerSize] = deal(9);
% 打开所有子图Y向网络
[AX.YGrid] = deal('on');

5、热力图

clc,clear all;
% 载入软件自带数据
% 将.csv文件直接读入table格式
 T = readtable('outages.csv')
 h = heatmap(T, 'Region', 'Cause');
 h.Title = '美国电力中断事故起因与地区热图';
 h.XLabel = '地区(Region)';
 h.YLabel = '起因(cause)';
 h.FontSize = 12;
 

6、极坐标图

clc,clear all;
theta = linspace(0, 6*pi)
rho1 = theta/10
p(1) = polarplot(theta,rho1);
rho2 = theta/13
hold on
p(2) = polarplot(theta,rho2);
[p.LineWidth] = deal(2);
p(2).LineStyle = "--";
hold off

7、极坐标直方图

clc,clear all;
theta = [0.1 1.1 5.4 3.4 2.3 4.5 2.9...
    3.4 5.6 2.3 2.1 3.5 0.6 6.1]
ax(1) = subplot(1,2,1,polaraxes)
p(1) = polarhistogram(ax(1), theta, 8)
p(1).LineStyle = 'none';
p(1).FaceAlpha = 0.7;
ax(2) = subplot(1,2,2,polaraxes)
p(2) = polarhistogram(ax(2), theta, 8)

8、等高线图

clc,clear all;
ax(1) = subplot(1,2,1)
ax(2) = subplot(1,2,2)
[X, Y, Z] = peaks;
% 返回M,等高线矩阵
% 返回C,等高线对象
[M1, C1] = contour(ax(1), X, Y, Z, 24)
[M2, C2] = contour3(ax(2), X, Y, Z, 24)
grid(ax(1), 'on')
axis(ax, 'square')

9、曲面函数和网格函数图

clc,clear all;
[X,Y] = meshgrid(-5:0.5:5);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
ax(1) = subplot(1,2,1);
ax(2) = subplot(1,2,2);
p(1) = surf(ax(1), X, Y, Z);
p(2) = mesh(ax(2),X, Y, Z)
axis(ax, 'square')
shading(ax(1), 'interp')
p(2).LineWidth = 0.2;

10、二维向量场

clc,clear all;
%% 向量图
% 测试函数:z=x*exp(-x.^2-y.^2)
[X, Y] = meshgrid(-2:0.2:2);
Z = X.*exp(-X.^2 - Y.^2);
% 为Z的每个维度上的间距指定间距参数
[DX, DY] =gradient(Z, 0.2, 0.2);
[~, c] = contour(X, Y, Z, 11);
c.LineWidth = 1;
hold on
q = quiver(X, Y, DX, DY)
q.LineWidth = 1.2;
q.MaxHeadSize = 0.5;
hold off

11、三维标量场图

clc,clear all;
[X, Y, Z] = meshgrid(-1:0.1:1)
V = X.*exp(-X.^2 + - Y.^2 -Z.^2)
% 设置要切平面的位置
xslice = [-0.7, 0.3, 0.9];
yslice = [0.8];
zslice = 0;
s = slice(X, Y, Z, V, xslice, yslice, zslice)
% 去掉所有上面的线条
[s.LineStyle] = deal('none');
% 颜色插补
shading interp
box on

12、绘制向量图

clc,clear all;
load wind u v w x y z
[m, n, p] = size(u)
[Cx, Cy, Cz] = meshgrid(1:4:m,1:4:n,1:4:p);
h = coneplot(u, v, w, Cx, Cy, Cz, y, 4)
h.EdgeColor = "none";
% 坐标轴紧密围绕数据且相等单位
axis tight equal
% 指定视点
view(37, 32)
% 显示坐标区域轮廓
box on
% 颜色配图方案为 jet
colormap jet
% 创建光源
light

        参考文献:MATLAB程序设计:重定义科学计算工具学习方法/王赫然编著. ——北京:清华大学出版社,2020,07

        注:本文根据《MATLAB程序设计:重定义科学计算工具学习方法》一书在本人学习过程略加删改整理所得,难免有不足或者难以理解之处。如若有需要,请参考原书!

MATLAB程序设计——重新定义科学计算工具学习方法icon-default.png?t=M5H6http://www.tup.tsinghua.edu.cn/booksCenter/book_08612301.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空林长风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值