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 on
ps2 = 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 绘制论文所需格式图实现(柱状图折线散点图)
如何使用MATLAB绘制ggplot风格图片(散点图及折线图)
如何使用MATLAB绘制ggplot风格图片(散点图及折线图)