【写论文必看】Matlab常用绘图操作(一)

Matlab 绘图总结

1. 如何对密集部分进行放大操作

正常使用Matlab代码生成图后,使用maginify.m函数进行放大操纵。具体操作部分如链接所示maginify.m的使用方法

2. 常用标记、颜色样式

在这里插入图片描述
官网标记样式
在这里插入图片描述
官网颜色样式
Matlab RGB 颜色对照表(0-1之间取值)

3. 给不同点或不同折线绘制不同颜色

例子给的是不同散点绘制不同的颜色

% 定义数据
data = [
    12.7103, 0.7417;
    12.6603, 0.7456;
    12.6667, 0.7530;
    12.6765, 0.6890;
    12.7005, 0.7503;
    21.0885, 0.8711;
    25.0842, 0.8968;
];

% 定义标记样式
markers = {'o', 's', 'd', '^', 'v', '>', '<'};
colors = {'b', 'g', 'r', 'c', 'm', [0.5 0 0], 'k'};

% 定义自定义标签
labels = {'ASSTV+BFBSF', 'SEID+BFBSF', 'SFCF+BFBSF', 'SNRCNN+BFBSF', 'WDRNN+BFBSF', 'UNet', 'Ours'};

% 绘制图表
figure;
hold on;
for i = 1:size(data, 1)
    plot(data(i, 1), data(i, 2), markers{i}, 'MarkerFaceColor', colors{i}, 'MarkerEdgeColor', colors{i}, 'MarkerSize', 10);
end

值得注意的点

  1. 对于不同的样式、颜色、标签是放到cell花括号中,注意在循环中的索引表示
  2. 如果不同的样式、颜色、标签放到矩阵中,则在循环中的索引就要使用(i,:)的索引方式

4. 两种图画在一张图中

使用hold on,将上一张图停下来,不被覆盖。

5. 设置网格线

grid on;

6. 绘制无数据的图!!!!

  1. 使用origin获取坐标提取坐标
  2. 使用Maltab的多项式拟合

7. 自定义渐变颜色矩阵

方法1: 得到的red_gradient和bule_gradient的矩阵就是渐变颜色矩阵。

%% 定义自定义颜色映射
num_colors = 1000; % 渐变色的数量

red_gradient = repmat(linspace(0.7, 0, num_colors)', 1, 3);
red_gradient(:, 2:end) = 0; % 确保G和B通道为0

% 从较浅的蓝到浅蓝,蓝色通道从0.5增加到1,红色和绿色通道保持为0
blue_gradient = repmat(linspace(0.5, 1, num_colors)', 1, 3);
blue_gradient(:, 1) = 0; % 确保R通道为0
blue_gradient(:, 2) = 0; % 确保G通道也为0

8. 黑白阴影柱形图

在这里插入图片描述
具体操作方法请查看slandarer大佬编写的函数

9. 自定义多类条形图

效果如下所示:
在这里插入图片描述

  • 数据加载部分
%数据
data1=[125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125];
data2=[125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125];
data3=[200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200];
data4=[150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150];
data5=[150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150];
data6=[350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350];
data7=[ 0 273 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455];
data8=[ 0 273 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455];
data9=[ 0 97 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162];
data10=[0 78 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130];
data11=[0 48 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80];
data12=[0 33 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55];
hours = 1:24;
  • 柱状图绘制
%加载画布
figure
bar1 = bar(hours,[data1;data2;data3;data4;data5;data6;data7(:,1:24);data8(:,1:24);data9(:,1:24);data10(:,1:24);data11(:,1:24);data12(:,1:24)]', 'grouped');
% 柱状图配色
CData=[149,162,255;
    250,128,128;
    255,192,118;
    250,231,104;
    135,232,133;
    60,185,252;
    115,171,245;
    203,155,255;
    67,67,72;
    144,237,125;
    247,163,92;
    128,133,233
    ]./255;

% 分组柱状图修饰
for i=1:length(bar1)
    bar1(i).EdgeColor='none';      % 轮廓无色
    bar1(i).FaceColor=CData(i,:);  % 设置颜色
end
  • X轴绘制
    在设置X轴的时候最好如下所示将不同属性进行设置,简洁明了。
% 修改X轴标签文本
ax = gca;
ax.FontName = 'Times New Roman';
ax.FontSize = 12;
ax.YGrid = 'on';
ax.GridAlpha = .2;
ax.Box = 'off';
ax.XTick = 1:24;
  • 图例设置
% 添加图例
name={'data1\qquad','data2\qquad','data3\qquad','data4\qquad','data5\qquad','data6','data7\qquad','data8','data9\qquad','data10','data11\qquad','data12'};
lgd = legend(bar1,name,'FontSize',12,'FontName', 'Times New Roman');
% 设置图例位置
lgd.Location = 'southoutside';
% 设置图例横向排列
lgd.Orientation = 'horizontal';
lgd.NumColumns = 6;
% 设置图例方形大小
lgd.ItemTokenSize = [12,12];
% 关闭框
lgd.Box = 'off';
lgd.Interpreter = 'latex';

这里为了实现将每列legend之间有间隙,将图例的字体格式设置为Latex,然后在其中使用\qquad的空格,以此达到列间隙的设置。如果有更好的方法,期待指正。

  • 其余自定义设置
% 整体设置
xlim([0 25]);
ylim([0 500]);
xlabel('X');
ylabel('Y');
title('My picture','FontSize',20,'FontWeight','bold');

% 修改Y轴
hold on
a = axis;
plot([a(1) a(2)],[a(3) a(3)],'w','linewidth',1.5,'HandleVisibility','off');
plot([a(1) a(1)],[a(3) a(4)],'w','linewidth',1.5,'HandleVisibility','off');
set(gca,'layer','bottom')
  • 整体代码
%数据
data1=[125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125];
data2=[125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125];
data3=[200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200];
data4=[150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150];
data5=[150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150];
data6=[350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350];
data7=[ 0 273 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455];
data8=[ 0 273 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455 455];
data9=[ 0 97 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162];
data10=[0 78 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130 130];
data11=[0 48 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80];
data12=[0 33 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55];
hours = 1:24;

%加载画布
figure
bar1 = bar(hours,[data1;data2;data3;data4;data5;data6;data7(:,1:24);data8(:,1:24);data9(:,1:24);data10(:,1:24);data11(:,1:24);data12(:,1:24)]', 'grouped');
% 柱状图配色
CData=[149,162,255;
    250,128,128;
    255,192,118;
    250,231,104;
    135,232,133;
    60,185,252;
    115,171,245;
    203,155,255;
    67,67,72;
    144,237,125;
    247,163,92;
    128,133,233
    ]./255;

% 分组柱状图修饰
for i=1:length(bar1)
    bar1(i).EdgeColor='none';      % 轮廓无色
    bar1(i).FaceColor=CData(i,:);  % 设置颜色
end

% 修改X轴标签文本
ax = gca;
ax.FontName = 'Times New Roman';
ax.FontSize = 12;
ax.YGrid = 'on';
ax.GridAlpha = .2;
ax.Box = 'off';
ax.XTick = 1:24;

% 添加图例
name={'data1\qquad','data2\qquad','data3\qquad','data4\qquad','data5\qquad','data6','data7\qquad','data8','data9\qquad','data10','data11\qquad','data12'};
lgd = legend(bar1,name,'FontSize',12,'FontName', 'Times New Roman');
% 设置图例位置
lgd.Location = 'southoutside';
% 设置图例横向排列
lgd.Orientation = 'horizontal';
lgd.NumColumns = 6;
% 设置图例方形大小
lgd.ItemTokenSize = [12,12];
% 关闭框
lgd.Box = 'off';
lgd.Interpreter = 'latex';

% 整体设置
xlim([0 25]);
ylim([0 500]);
xlabel('X');
ylabel('Y');
title('My picture','FontSize',20,'FontWeight','bold');

% 修改Y轴
hold on
a = axis;
plot([a(1) a(2)],[a(3) a(3)],'w','linewidth',1.5,'HandleVisibility','off');
plot([a(1) a(1)],[a(3) a(4)],'w','linewidth',1.5,'HandleVisibility','off');
set(gca,'layer','bottom')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lydia.na

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

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

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

打赏作者

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

抵扣说明:

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

余额充值