Matlab论文插图绘制模板第84期—极坐标散点图(PolarScatter)

Posted 阿昆的科研日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab论文插图绘制模板第84期—极坐标散点图(PolarScatter)相关的知识,希望对你有一定的参考价值。

在之前的文章中,分享了很多Matlab散点图的绘制模板:

这些散点图均是在笛卡尔坐标系下绘制的。

那么进一步,再来看一下极坐标散点图的绘制模板。

先来看一下成品效果:

特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加入方式


模板中最关键的部分内容

1. 数据准备

此部分主要是读取原始数据并初始化绘图参数

% 读取数据load data.mat% 初始化参数Theta = t;R1 = r1;R2 = r2;

2. 颜色定义

作图不配色就好比做菜不放盐,总让人感觉少些味道。

但颜色搭配比较考验个人审美,需要多加尝试。

这里直接使用TheColor配色工具中的XKCD配色库

%% 颜色定义C = TheColor('xkcd',[240 588]);C1 = C(1,1:3);C2 = C(2,1:3);

3. 极坐标散点图绘制

使用‘polarscatter’命令,绘制初始极坐标散点图

ps1 = polarscatter(Theta,R1,40);hold onps2 = polarscatter(Theta,R2,40);hTitle = title('PolarScatter Plot');

4. 细节优化

为了插图的美观,将初始极坐标散点图赋上之前选择的颜色并修改部分对象属性

% 对象属性修改ps1.LineWidth = 2;ps1.MarkerEdgeColor = C1;ps2.LineWidth = 2;ps2.MarkerEdgeColor = C2;

然后,对坐标轴细节等进行美化:

% 坐标区调整set(gca, 'LineWidth',0.7,...                               % 线宽         'RGrid','on','ThetaGrid','on',...                 % 网格         'GridColor',[0 0 0],...                           % 网格颜色         'ThetaZeroLocation','right',...                   % 极角0位置         'TickDir', 'out', 'TickLength', [0 0], ...        % 刻度         'RMinorTick', 'off', 'ThetaMinorTick', 'off', ... % 小刻度         'RAxisLocation',60,...                            % 极径标签位置         'ThetaDir', 'clockwise')                          % 极角方向% 字体和字号set(gca, 'FontName', 'Arial', 'FontSize', 11)set(hTitle, 'FontName', 'Arial', 'FontSize', 12, 'FontWeight' , 'bold')% 背景颜色set(gcf,'Color',[1 1 1])

设置完毕后,以期刊所需分辨率、格式输出图片。

%% 图片输出figW = figureWidth;figH = figureHeight;set(figureHandle,'PaperUnits',figureUnits);set(figureHandle,'PaperPosition',[0 0 figW figH]);fileout = 'test';print(figureHandle,[fileout,'.png'],'-r300','-dpng');

以上。

科研技巧Matlab 绘制论文所需格式图实现(柱状图折线散点图)

1 折线图

(1)纵坐标直接显示数值

clc
clear
figure()
t1 = (2010:1:2019)'
y1 = [40,45,42,41,33,25,26,19,14,19]


plot(t1,y1,'-ro','linewidth',2)

set(gca,'FontSize',15)
set(gcf,'Position',[100 100 700 600]);
ylabel('数量','fontsi',14) %y轴坐标描述
ylabel('年份','fontsi',14) %y轴坐标描述
% xlabel('年份','fontsi',10,'position',[2022 2026]);
xlabel('年份','fontsi',14);
% set(gca,'XTick',[2009:1:2020]) 
title('2010-2019数据')
ylim([10,47]);
set(gca,'XTick',[2009:1:2020]) 
xlim([2009,2020]);

grid on
grid minor

(2)纵坐标显示对数,纵坐标是10的次幂显示

figure()
x = 0:5:30
y = [0.045,0.006,0.005,0006,0.0004,0.0002,0.0001]% y是你的数据
% 纵坐标是10的次幂显示
semilogy(x,y,'-r*','linewidth',2)
% 纵坐标是直接显示数据
% plot(x,y.BER,'-r*','linewidth',2)
legend('数量');%右上角标注
xlabel('横轴')  %x轴坐标描述
ylabel('纵轴') %y轴坐标描述
%     ylim([10^(-3) 0])%y轴范围
xlim([0 30])%x轴范围
set(gca,'FontSize',15)%字体大小
set(gcf,'Position',[100 100 700 600]);%边框大小
grid on%打开表格线
grid minor

2 抓状图

(1)单个柱状图

clc
clear
figure()
y = [8,7,7,6,6]
Method1='方法1';
Method2='方法2';
Method3='方法3';
Method4='方法4';
Method5='方法5';



b=bar(y,0.6);
set(gca,'FontSize',13)
set(gcf,'Position',[100 100 700 600]);
ylabel('文献数(篇)','fontsi',14) %y轴坐标描述
set(gca,'xticklabel',Method1,Method2,Method3,Method4,Method5)
ylim([0,10]);
set(gca,'XTick',[1:1:5]) 

xtb = get(gca,'XTickLabel');% 获取横坐标轴标签句柄
xt = get(gca,'XTick');% 获取横坐标轴刻度句柄
yt = get(gca,'YTick'); % 获取纵坐标轴刻度句柄         
xtextp=xt;%每个标签放置位置的横坐标,这个自然应该和原来的一样了。                    
ytextp=yt(1)*ones(1,length(xt)); 
text(xtextp,ytextp,xtb,'HorizontalAlignment','left','rotation',-45,'fontsize',12);
set(gca,'xticklabel','');% 将原有的标签隐去


xtips1 = b.XEndPoints;
ytips1 = b.YEndPoints; %获取 Bar 对象的 XEndPoints 和 YEndPoints 属性
labels1 = string(b.YData); %获取条形末端的坐标
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')
grid on
grid minor

(2)两个柱状图同时显示

clc
clear
figure()
y = [12 3.95;24 7.89;25 8.22;13 4.28;23 7.57]
Method1= '方法一';
Method2='方法二';
Method3='方法三';
Method4='方法四';
Method5='方法五';



b=bar(y,0.6);%0.6表示宽度占比
set(gca,'FontSize',13)
set(gcf,'Position',[100 100 700 600]);
ylabel('数量|占比','fontsi',14) %y轴坐标描述
set(gca,'xticklabel',Method1,Method2,Method3,Method4,Method5)
% ylim([0,10]);
set(gca,'XTick',[1:1:5]) 

xtb = get(gca,'XTickLabel');% 获取横坐标轴标签句柄
xt = get(gca,'XTick');% 获取横坐标轴刻度句柄
yt = get(gca,'YTick'); % 获取纵坐标轴刻度句柄         
xtextp=xt;%每个标签放置位置的横坐标,这个自然应该和原来的一样了。                    
ytextp=yt(1)*ones(1,length(xt)); 
text(xtextp,ytextp,xtb,'HorizontalAlignment','left','rotation',-45,'fontsize',12);
set(gca,'xticklabel','');% 将原有的标签隐去

% 在蓝色的柱状图的上,显示数值
xtips1 = b(1).XEndPoints;
ytips1 = b(1).YEndPoints; %获取 Bar 对象的 XEndPoints 和 YEndPoints 属性
labels1 = string(b(1).YData); %获取条形末端的坐标
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')

% 在黄色的柱状图的上,显示数值
xtips2 = b(2).XEndPoints;
ytips2 = b(2).YEndPoints; %获取 Bar 对象的 XEndPoints 和 YEndPoints 属性
labels2 = string(b(2).YData); %获取条形末端的坐标
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')
grid on
grid minor

3 散点图

figure()
x=-8:1:8;
y=x.^2;
scatter(x,y,'*')
legend('数量');%右上角标注
xlabel('横轴')  %x轴坐标描述
ylabel('纵轴') %y轴坐标描述
set(gca,'FontSize',15)%字体大小
set(gcf,'Position',[100 100 700 600]);%边框大小
grid on%打开表格线
grid minor

以上是关于Matlab论文插图绘制模板第84期—极坐标散点图(PolarScatter)的主要内容,如果未能解决你的问题,请参考以下文章

科研技巧Matlab 绘制论文所需格式图实现(柱状图折线散点图)

还在用Excel画散点图?不试试极坐标散点图?

如何使用MATLAB绘制ggplot风格图片(散点图及折线图)

如何使用MATLAB绘制ggplot风格图片(散点图及折线图)

如何使用MATLAB绘制ggplot风格图片(散点图及折线图)

如何使用MATLAB绘制ggplot风格图片(散点图及折线图)