一、气泡图

第一种会放success和speed的图,然后圆圈的大小是结合两者综合后的性能,俗称“气泡图”
先放一下自己模仿ocean画的一幅图:


以下是画的代码(直接运行就能出来上面这幅图):

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes._axes as axes
import matplotlib.figure as figure
from matplotlib.backends.backend_pdf import PdfPages
pdf = PdfPages('speed-eao2018.pdf')
plt.rc('font',family='Times New Roman')fig, ax = plt.subplots()  # type:figure.Figure, axes.Axes
ax.set_title('The Performance $vs.$ Speed on VOT-2018', fontsize=15)
ax.set_xlabel('Tracking Speed (FPS)', fontsize=15)
ax.set_ylabel('EAO', fontsize=15)trackers = ['C-RPN', 'SiamVGG', 'DaSiamRPN', 'ATOM', 'SiamRPN++', 'DiMP', 'Ours (offline-2)', 'Ours (offline-1)', 'Ours (online)']
speed = np.array([50, 75, 65, 35, 50, 45, 72, 58, 25])
speed_norm = np.array([50, 75, 65, 35, 50, 45, 72, 58, 25]) / 48
performance = np.array([0.273, 0.286, 0.380, 0.401, 0.414, 0.440, 0.438, 0.467, 0.490])circle_color = ['cornflowerblue', 'deepskyblue',  'turquoise', 'gold', 'yellowgreen', 'orange', 'r', 'r', 'r']
# Marker size in units of points^2
volume = (300 * speed_norm/5 * performance/0.6)  ** 2ax.scatter(speed, performance, c=circle_color, s=volume, alpha=0.4)
ax.scatter(speed, performance, c=circle_color, s=20, marker='o')
# text
ax.text(speed[0] - 2.37, performance[0] - 0.031, trackers[0], fontsize=10, color='k')
ax.text(speed[1] - 11.00, performance[1] - 0.005, trackers[1], fontsize=10, color='k')
ax.text(speed[2] - 3.5, performance[2] - 0.05, trackers[2], fontsize=10, color='k')
ax.text(speed[3] - 2.4, performance[3] - 0.032, trackers[3], fontsize=10, color='k')
ax.text(speed[4] - 2.9, performance[4] - 0.040, trackers[4], fontsize=10, color='k')
ax.text(speed[5] - 1.8, performance[5] - 0.042, trackers[5], fontsize=10, color='k')
ax.text(speed[6] - 6.0, performance[6] + 0.051, trackers[6], fontsize=14, color='k')
ax.text(speed[7] - 4.5, performance[7] -0.050, trackers[7], fontsize=12, color='k')
ax.text(speed[8] - 4, performance[8] -0.035, trackers[8], fontsize=12, color='k')ax.grid(which='major', axis='both', linestyle='-.') # color='r', linestyle='-', linewidth=2
ax.set_xlim(20, 80)
ax.set_ylim(0.20, 0.53)
ax.xaxis.set_tick_params(labelsize=15)
ax.yaxis.set_tick_params(labelsize=15)# plot lines
ystart, yend = ax.get_ylim()
ax.plot([25, 25], [ystart, yend], linestyle="--", color='k', linewidth=0.7)
ax.plot([25, 58], [0.490,  0.467], linestyle="--", color='r', linewidth=0.7)
ax.plot([58, 72], [0.467, 0.438], linestyle="--", color='r', linewidth=0.7)
ax.text(26, 0.230, 'Real-time line', fontsize=11, color='k')fig.savefig('speed-eao2018.svg')pdf.savefig()
pdf.close()
plt.show()

主要要提供的就是每个tracker的speed和success,其他字的位置和圈的相对大小都是自己调整的

二、vot_eao_rank图

这主要是画vot的eao排序的图,代码来自于这里


matlab代码长这样:

clear; close all; clc;
load('../data/attr_eao_vot2016.mat');tracker_names = fieldnames(result);
legend_names = fieldnames(result.(tracker_names{1}));
num_tracker = length(tracker_names);
num_attr = length(legend_names);
eao = zeros(num_tracker,num_attr);
for i = 1:num_trackerfor j = 1:num_attreao(i,j) = result.(tracker_names{i}).(legend_names{j});end
end
[eao_sorted,sorted_index] = sort(eao(:,1),'descend'); % rank by baseline eao
tracker_names = tracker_names(sorted_index);figure;
Maker_style = {'o','x','*','v','diamond','+','<','pentagram','>','square','^','hexagram'};
Color_style = hsv(7);
line([0,num_tracker],[0.255,0.255],'LineWidth',2,'Color',[0.7 0.7 0.7]); hold on;
recent_index = [1,2,4,5,7,10,13,15,17,22,28,31,36,39,50];for i = 1:num_trackerif i == 1 || i == 3m(i) = plot(i,eao_sorted(i),'Marker','.','Color',Color_style(i,:),...'LineStyle','none','LineWidth',2,'MarkerSize',35);hold on;elsem(i) = plot(i,eao_sorted(i),'Marker',Maker_style{mod(i-1,12)+1},'Color',Color_style(mod(i-1,7)+1,:),...'LineStyle','none','LineWidth',2,'MarkerSize',10);hold on;endplot([i,i],[0,eao_sorted(i)],'LineStyle',':','Color',[0.83 0.81 0.78]);hold on;if any(i == recent_index)plot(i+2, 0.05,'MarkerSize',6,'Marker','o','LineStyle','none',...'Color',[0.83 0.81 0.8],'LineWidth',2);hold on;end
endset(gca,'xdir','reverse')
ylim([0,(eao_sorted(1)+0.05)]);
xlim([1, num_tracker]);
set(gca,'XTick',1:5:70);
set(gca,'YTick',0:0.05:(eao_sorted(1)+0.05))
set(gca,'linewidth',2);
set(gca,'FontSize',12);
% annotation('textarrow',[0.76,0.8],[0.76,0.72],'String','SAECO','FontWeight','bold','FontSize',12);
annotation('textbox',[.15,.8,.1,.1],'String','$$\hat{\Phi}$$','FontWeight','bold','FontSize',30,'LineStyle','none','Interpreter','latex','FitBoxToText','off')
box onnum_tracker_show = 10; % only write top10
for i = 1:num_tracker_show %legend_names{i} = [strrep(tracker_names{i},'_','\_'),...num2str(eao_sorted(i),'~[%0.3f]')];
end
legend(m(1:num_tracker_show),legend_names(1:num_tracker_show),...'Location','eastoutside','Interpreter', 'latex','FontSize',16)
set(gcf, 'position', [500 300 800 250]);
saveas(gcf,'../img/eao_rank_vot2016','pdf');
saveas(gcf,'../img/eao_rank_vot2016','png');

最主要的也是先要有这个attr_eao_vot2016.mat,也就是每个tracker在vot的每个属性以及overall的结果。

三、属性雷达图

这还得来自于有属性挑战的数据集上的结果,比如LaSOT,VOT,OTB等,现在的代码是来自于这里,在matlab底下画出来的,先看一下效果图:

然后上代码:

clear; close all; clc;
load('../data/attr_eao_vot2016.mat');tracker_names = fieldnames(result);
legend_names = fieldnames(result.(tracker_names{1}));
num_tracker = length(tracker_names);
num_attr = length(legend_names);
eao = zeros(num_tracker,num_attr);
for i = 1:num_trackerfor j = 1:num_attreao(i,j) = result.(tracker_names{i}).(legend_names{j});end
end
[s,sorted_index] = sort(eao(:,1),'descend'); % rank by baseline eaonum_tracker_show = 10; % only write top10
tracker_names = tracker_names(sorted_index(1:num_tracker_show));
eao = eao(sorted_index(1:num_tracker_show),:);eao(:,num_attr+1) = eao(:,1);a_min = min(eao,[],1);
a_max = max(eao,[],1);t = (0:1/num_attr:1)*2*pi;
h = [];
masker_shape = {'x','.'};
masker_size = {10,40};
color_masker = hsv(num_tracker_show);
color_line = color_masker*0.4 +ones(num_tracker_show,3)*0.6;
ax = polaraxes;for i = 1:num_tracker_showh(i) = polarplot(t, (eao(i,:)-a_min)./(a_max-a_min)+0.2, 'MarkerSize',masker_size{mod(i,2)+1},...'Marker',masker_shape{mod(i,2)+1},'LineWidth',2,...'Color',color_line(i,:),'MarkerEdgeColor',color_masker(i,:)); hold on;
endpolarplot(t, 0.5, 'LineWidth',2, 'Color',[0,0,0]); hold on;grid off
legend_names = {'Overall','Occlusion','Camera~motion','Size~change',...'Illumination~change','Motion~change', 'Unassigned'};
for i = 1:num_attrlegend_names{i} = ['\begin{tabular}{c}', legend_names{i}, '\\',...[num2str(a_min(i),'(%.3f,') num2str(a_max(i),'%.3f)')], '\end{tabular}'];
end
ax.ThetaTickLabels = legend_names;
ThetaTick = (0:1/num_attr:1)*360;
ax.ThetaTick = ThetaTick(1:end-1);
ax.RTickLabels = [];
ax.TickLabelInterpreter = 'latex';for i = 1:num_tracker_show %tracker_names{i} = strrep(tracker_names{i},'_','\_');
end ah1 = gca;
legend1=legend(ah1,h(1:5),tracker_names(1:5),'Orientation','horizontal','Location','southoutside');
ah2=axes('position',get(gca,'position'), 'visible','off');
legend2=legend(ah2,h(6:10),tracker_names(6:10),'Orientation','horizontal','Location','southoutside');
set(legend1,'Box','off')
set(legend2,'Box','off')
legend1_pos = get(legend1,'Position');
set(legend2,'Position',legend1_pos-[0,legend1_pos(4)*1.2,0,0]);% set(gcf, 'position', [500 300 800 800]);
saveas(gcf,'../img/attr_eao_vot2016','pdf')
saveas(gcf,'../img/attr_eao_vot2016','png')

最主要的也是先要有这个attr_eao_vot2016.mat,也就是每个tracker在vot的每个属性以及overall的结果。

tracking里面几种常见图的画法相关推荐

  1. python修改文件名称唯美_5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了...

    原创:小dull鸟 python数据分析之禅 原文链接: 5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了​mp.weixin.qq.com 有时候我们做数据可视化并 ...

  2. 数据结构几种常见图的邻接矩阵的画法(有向图带权值,有向图不带权值,无向图带权值,无向图不带权值)

    这不马上要期末考试了,复习的时候突然发现了有好几种图的邻接矩阵需要画,在网上找了半天结果发现也没有特别详细的总结,所以经过总结写一下吧,希望对有需要的人,有点帮助吧!!!!(如有不对还请见谅!!!!! ...

  3. python 获取文件名称唯美_5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了...

    原创:小dull鸟 python数据分析之禅 原文链接: 有时候我们做数据可视化并不需要特别复杂的功能,仅仅是想把简单的数据用图形展示出来 今天就给大家介绍一种非常适合新手的python可视化库--p ...

  4. 几种常吃却极没营养的日常食物

    依据热量,我们把食物分成每天必须摄取的"绿灯食物".需限量摄取的"黄灯食物",以及只能偶尔摄取的"红灯食物". [size=small][b ...

  5. [英语学习]表示将来时的几种常用法

    The source : http://chat.pep.com.cn/lb5000/topic.cgi?forum=10&topic=7707&show=25 Author : mu ...

  6. 【优雅】matplotlib 常见图

    对于matplotlib 而言, 首先需要创建一个画布[即 plt.figure()] 然后才可以进行各种图标绘制 最后通过[plt.show()]显示 [优雅]matplotlib 常见图:http ...

  7. 三种循环的流程图画法总结 (转载)

    三种循环的流程图画法总结 C语言编程中常用的三种循环为for(::),while  和 do-while. 1.  for循环 for循环形式: for(表达式1:表达式2:表达式3) 流程图: 图1 ...

  8. 这7种UML图的画法每个程序员都应该掌握~

    大家好,我是飘渺.今天我们来探讨几种常见UML图的画法. 众所周知,软件开发是一个分阶段进行的过程.不同的开发阶段需要使用不同的模型图来描述业务场景和设计思路,在不同的阶段输出不同的设计文档也是必不可 ...

  9. 掌握18种特殊布线的画法与技巧,PCB设计无往不利!

    素材来源于网络 1. AD 布蛇形线方法 Tool 里选 Interactive length tuning 要先布好线再改成蛇形, 这里用的是布线时直接走蛇形: 先 P->T 布线, 再 Sh ...

最新文章

  1. loadrunner中创建唯一随机数
  2. 专访阿里云萧少聪、曹龙:一家云厂商对入局数据库做了哪些思考?
  3. 倾斜模型精细化处理_推荐一款好用的倾斜摄影精细化单体建模软件——OSketch...
  4. 【Linux系统编程】进程间通信之无名管道
  5. java i o流异常问题_第四章 Java的I/O流和异常处理
  6. JAVA 串口编程 (一)
  7. 3秒取暖,超高颜值!冬日必备的大宇取暖器
  8. 使用Guava对并发应用程序进行基于对象的微锁定
  9. 1.5 编程基础之循环控制 45 金币 方法二(python3实现)
  10. 中的listeners_C++中Future和Promise的一种简单实现
  11. 用python写用手机发邮件_如何用python写发邮件?
  12. oracle有条件插入数据,Oracle有条件地插入数据
  13. 记录linux启动次数的脚本,类UNIX系统中启动脚本记录
  14. iOS与JS交互之UIWebView协议拦截
  15. python工时计算_七兮网络-如何根据考勤数据自动计算出员工工作时间
  16. 读取QQ ClientKey C++版本
  17. md5算法大作战推html5版本,MD5大作战
  18. js 根据公历日期 算出农历_显示阴历(农历)日期的js代码
  19. Python学习笔记 | 编码和文件读写
  20. apt cyg 安装php,Windows下安装Cygwin及apt-cyg

热门文章

  1. 在网站上的视频直播添加弹幕做法
  2. 网页数据抓取之当当网
  3. 如何不翻墙访问ChatGpt?
  4. 盛铭轩电商:详情页优化
  5. vscode中选中多行多光标进行操作及一些常用的命令(快捷键)
  6. Java面试基础知识III
  7. 《深度学习》 笔记(一)
  8. k8s之HPA(Pod水平自动伸缩)
  9. 会声会影2022一键安装图文详细教程
  10. 《人机交互:软件工程视角》期末复习提纲