MATLAB如何绘制折线图和美化折线图
MATLAB如何绘制折线图和美化折线图
在写论文的时候,我们直接用MATLAB绘制的图像和大佬的比起来总是差很远,现在我们来看如何美化科研论文的图片。
绘制基本图像
我们用到的数据,保存的文件名是 " d a t a A 1. c s v " "dataA1.csv" "dataA1.csv",为了简单,我就选取了10行数据, x = 1 : 10 x=1:10 x=1:10相同, y y y不同的两列数据如下:
我们今天来绘制后面两列数据。首先我们在MATLAB中导入数据
data=csvread('dataA1.csv'); %在这里导入的数据只能包含数字
这里还有其他方法导入数据,假如是.xlsx格式的数据,这用以下代码
data=xlsread("dataA1.xlsx")
现在我们用以下代码绘制出折线图,
clc;clear; % 清除
%% Import data
data=csvread('dataA1.csv');
% data=dataA1
%% Plot
figure
hold on %保持界面不会被刷新
for i=1:size(data,2)-1
plot(data(:,1),data(:,i+1))
end
legend('GA','GB','Location','eastoutside')
输出的结果我们保存为.png格式。图如下:
接下里我们看如何美化上面这张图片。
GUI界面进行调整
第一种方法是通过MATLAB的GUI界面进行调整,也就是对于绘制出来的图片,我们点击“编辑”,然后点击"图窗属性"。可以看到下面的“属性检查器”。
在这里可以对图片的属性进行各种各样的设置,这里就不详细讲解了,然而这是针对图片很少的情况下,但是针对要绘制很多图片的时候,在一个一个参数的调,岂不是很麻烦,接下来我们看另一种方法。
编写代码进行调整
第二种方法是通过编写代码进行调整。首先我们先对图像的参数进行设计,如下
fontSize=28; %字体文字
lineWidthBox=1.5; %Box的线宽
lineWidth=2.5; %线条的线宽
symbol=['o','s']; %标记
markerSize=7; % 标记的尺寸
pictureSize=[200,200,950,650]; % 绘制出来图片的尺寸,200,200,左下角的位置,代表像素值。950,650 图片的长和高,也代表像素值。
fileName='F2.png'; % 保存图片的名字
pictureResolution='-r600'; % 精度越大,图片越清晰。
color=[[0 0 139]/255;[0 139 139]/255];%2行3列的矩阵
coordinateRange=[[0 10];[0 2500]];%坐标范围
xLabel='Time [t]'; %x标签
yLabel='Frequency [m/t]';% y标签
在这里我们对图片的字体,Box的线宽,点的标记等参数进行了参数取值,对于color,我们还可以选取自己喜欢的颜色,可以查看网站https://tool.oschina.net/commons?type=3。调好参数以后,我们进行绘图
%% Plot
figure
hold on %保持界面不会被刷新
box on % box直接调出来
set(gca,'LineWidth',lineWidthBox) %设置box的线宽
for i=1:size(data,2)-1
plot(data(:,1),data(:,i+1),'-','Color',color(i,:),'LineWidth',lineWidth,'Marker',symbol(1,i),'MarkerSize',markerSize,'MarkerFaceColor',color(i,:))
end %绘制图片
legend(' GA',' GB','Location','eastoutside') %标签,外边
legend('boxoff') %去除图例边框
set(gca,'XLim',coordinateRange(1,:),'YLim',coordinateRange(2,:)); % 坐标范围
xlabel(xLabel)
ylabel(yLabel )
set(gca,'FontName','Time New Roman','FontSize',fontSize) %对所有的字体字号进行设置
set(设置坐标属性),gca : 表示当前坐标区或图,FontName 设置字体, 常用 ‘Times New Roman’ ;最后我们对图片进行保存,这里 gcf : Current figure handle(当前图像句柄)
%% Output 保存
set(gcf,'Position',pictureSize) %输出图片尺寸的大小
print('-djpeg',fileName,pictureResolution); % 名字,精度,对图片进行输出
完整的代码如下:
clc;clear; % 清除
%% Import data
data=csvread('dataA1.csv');
%% Parameter setting
fontSize=28; %字体文字
lineWidthBox=1.5; %Box的线宽
lineWidth=2.5; %线条的线宽
symbol=['o','s']; %标记
markerSize=7; % 标记的尺寸
pictureSize=[200,200,950,650]; % 绘制出来图片的尺寸,200,200,左下角的位置,代表像素值。950,650 图片的长和高,也代表像素值。
fileName='F2.png'; % 保存图片的名字
pictureResolution='-r600'; % 精度越大,图片越清晰。
color=[[0 0 139]/255;[0 139 139]/255];%2行3列的矩阵 https://tool.oschina.net/commons?type=3
coordinateRange=[[0 10];[0 2500]];%坐标范围
xLabel='Time [t]'; %x标签
yLabel='Frequency [m/t]';% y标签
%% Plot
figure
hold on %保持界面不会被刷新
box on % box直接调出来
set(gca,'LineWidth',lineWidthBox) %设置box的线宽
for i=1:size(data,2)-1
plot(data(:,1),data(:,i+1),'-','Color',color(i,:),'LineWidth',lineWidth,'Marker',symbol(1,i),'MarkerSize',markerSize,'MarkerFaceColor',color(i,:))
end %绘制图片
legend(' GA',' GB','Location','eastoutside') %标签,外边
legend('boxoff') %去除图例边框
set(gca,'XLim',coordinateRange(1,:),'YLim',coordinateRange(2,:)); % 坐标范围
xlabel(xLabel)
ylabel(yLabel )
set(gca,'FontName','Time New Roman','FontSize',fontSize) %对所有的字体字号进行设置
%% Output 保存
set(gcf,'Position',pictureSize) %输出图片尺寸的大小
print('-djpeg',fileName,pictureResolution); % 名字,精度,对图片进行输出
那么我们调整好的的图片为:
总结
通过上述实验。发现代码编写来美化科研图片确实很复杂,但是方便使用。对于科研论文来说,一个优美的图片可能给你带来大大的加分。有疑问的小伙伴可以一起交流。