当前位置: 首页 > news >正文

MATLAB | 情人节画个花瓣venn图?

之前七夕节情人节各种花,相册,爱心啥的都快画够了,今年画个花瓣韦恩图?


花瓣上的数字是仅属于该类的样本数,而中心的数字是属于每一类的样本数


教程部分

0 数据准备

% 给组起名t1 t2 t3...t15
setName = compose('t%d', 1:15);% 随机生成数据
Data = [rand(200, 15) > .1; rand(200, 15) > .85];% 设置字体
numFont = {'FontSize', 14, 'FontName', 'Times New Roman'};
labFont = {'FontSize', 16, 'FontName', 'Times New Roman'};

其中Data数据是个0-1矩阵,矩阵每一行代表一个样本,如果第n列是1代表该样本属于第n类,是0则代表不属于。


1 配色

CList = lines(15);
% C = flowerPlotColor();
% CList = C.CList631;

这里直接取MATLAB自带的lines配色,当然我也准备了很多其他配色,可以复制下来用:

function C=flowerPlotColor
C.CList1877 = [0.2431    0.3294    0.58820.5098    0.5647    0.73330    0.5569    0.80780.3490    0.7804    0.92160.0275    0.4431    0.52940.4157    0.6667    0.71760.0392    0.5647    0.52550.3294    0.7490    0.71760.5569    0.1255    0.26270.7373    0.4784    0.56080.8784    0.3765    0.49410.9255    0.6275    0.69800.9961    0.6275    0.56470.9961    0.8118    0.78040.7216    0.7373    0.75690.8824    0.8863    0.8980];
C.CList1514 = [0.4078    0.5647    0.81570.9098    0.7843    0.65880.9725    0.8784    0.72160.9725    0.9725    0.97250.2196    0.3137    0.43920.5333    0.6588    0.97250         0         00.5961    0.5961    0.69020.3451    0.4706    0.56470.8471    0.8471    0.97250.7216    0.7216    0.81570.8157    0.6902    0.56470.7216    0.5961    0.47060.2510    0.4078    0.62750.7216    0.7843    0.9725];
C.CList1596 = [0.2549    0.5490    0.94120.9882    0.7059    0.25490.8784    0.2510    0.03920.0196    0.3922    0.57250.7490    0.7490    0.74900.1020    0.2314    0.41181.0000    0.8902    0.50980.0706    0.6118    0.86670.7922    0.4196    0.29410    0.3608    0.85880.9529    0.8235    0.53330.3137    0.3882    0.50590.9451    0.7255    0.65880.8784    0.5137    0.03920.4706    0.5765    0.7451];
C.CList1470 = [0.1882    0.4078    0.59610.2824    0.5020    0.69020.9098    0.8157    0.62750.7843    0.6902    0.50200.3765    0.5961    0.78430.1255    0.1882    0.28240         0         00.4078    0.3765    0.28240.5961    0.5333    0.37650.5647    0.7529    0.90980.2196    0.3137    0.47060.6902    0.7216    0.75290.9725    0.9725    0.97250.5020    0.5333    0.59610.9725    0.9098    0.7843];
C.CList1827 = [1.0000    0.6118         00.9686    0.7412    0.35291.0000    0.8000    0.60001.0000    1.0000    0.20001.0000    1.0000    0.61180.8039    0.3882    0.38820.8000    0.6000    0.80001.0000    0.6196    0.38820.3922    0.4275    0.80000.6118    0.6118    1.00000.2000    0.6000    1.00000.6000    0.8000    1.00001.0000    1.0000    0.80000.6941    0.5843    0.47840.9294    0.5333    0.29800.9608    0.9294         00.8667    1.0000    1.0000];
C.CList1607 = [0.8863    0.5686    0.56860.6000    0.8667    0.57250.5765    0.8471    0.72550.5804    0.7686    0.82750.5804    0.6039    0.80780.7020    0.5804    0.80000.8000    0.5882    0.69410.8000    0.6431    0.60000.8745    0.8980    0.57251.0000    0.6471    0.37650.4196    1.0000    0.38820.3961    1.0000    0.80000.3961    0.7686    1.00000.3961    0.4196    1.00000.6784    0.3961    1.00001.0000    0.3961    0.95691.0000    0.3961    0.51761.0000    0.3961    0.3961];
C.CList631 = [0.1059    0.6392    0.77650.1725    0.7098    0.75290.1882    0.7373    0.67840.1294    0.6902    0.52940.2000    0.6510    0.36080.3412    0.6392    0.21570.6353    0.7137    0.15290.8353    0.7333    0.12940.9725    0.7137    0.12550.9725    0.5725    0.09020.9412    0.4039    0.09800.8784    0.2039    0.14900.9647    0.2863    0.44310.9882    0.4431    0.61960.9216    0.4510    0.70200.8078    0.4118    0.74510.6353    0.4275    0.76080.4706    0.4510    0.75290.3098    0.4863    0.7294];
end




2 数据处理及图窗生成

% 数据计算
cT = linspace(0, 2*pi, 200);
cX = cos(cT).*8 + 8;
cY = sin(cT).*3;
cXY = [cX;cY];
setNum = size(Data, 2);
rT = 2*pi./setNum;
rM = [cos(rT),-sin(rT); sin(rT),cos(rT)];uniq = sum(Data.*(sum(Data,2) == 1),1);
core = sum(sum(Data,2) == setNum);figure('Units', 'normalized', 'Position', [.1,.1,.5,.8]);
ax=gca;
ax.NextPlot = 'add';
ax.DataAspectRatio = [1,1,1];
ax.XColor = 'none';
ax.YColor = 'none';

3 绘制花

% 绘制椭圆花瓣
for i = 0:setNum-1iXY = rM^i*cXY;fill(iXY(1,:), iXY(2,:), CList(i+1,:), 'FaceAlpha', .4, 'EdgeColor', 'none');
end
% 绘制白色边缘线
if 1
for i = 0:setNum-1iXY = rM^i*cXY;plot(iXY(1,:), iXY(2,:), 'Color', 'w', 'LineWidth', 1.2);
end
end
fill(cos(cT).*2.3, sin(cT).*2.3, [1,1,1], 'EdgeColor', 'none')


4 绘制文本

% 绘制文本信息
for i = 1:setNumtR = (i-1)*rT/pi*180;if tR>=0 && tR<=180tR = tR-90;elsetR = tR+90;endtext(cos((i-1)*rT).*13, sin((i-1)*rT).*13, num2str(uniq(i)),...'HorizontalAlignment', 'center',...'VerticalAlignment', 'middle',...'Rotation', tR,...numFont{:})text(cos((i-1)*rT).*17, sin((i-1)*rT).*17, setName{i},...'HorizontalAlignment', 'center',...'VerticalAlignment', 'middle',...'Rotation', tR,...labFont{:})
end
text(0, 0, {'core';num2str(core)},...'HorizontalAlignment', 'center',...'VerticalAlignment', 'middle',...labFont{:})


完整代码

% flowerPlotDemo% 给组起名t1 t2 t3...t15
setName = compose('t%d', 1:15);% 随机生成数据
Data = [rand(200, 15) > .1; rand(200, 15) > .85];% 设置字体
numFont = {'FontSize', 14, 'FontName', 'Times New Roman'};
labFont = {'FontSize', 16, 'FontName', 'Times New Roman'};% 设置配色
CList = lines(15);
% C = flowerPlotColor();
% CList = C.CList631;% =========================================================
% 绘图部分代码
% ---------------------------------------------------------
% 数据计算
cT = linspace(0, 2*pi, 200);
cX = cos(cT).*8 + 8;
cY = sin(cT).*3;
cXY = [cX;cY];
setNum = size(Data, 2);
rT = 2*pi./setNum;
rM = [cos(rT),-sin(rT); sin(rT),cos(rT)];uniq = sum(Data.*(sum(Data,2) == 1),1);
core = sum(sum(Data,2) == setNum);figure('Units', 'normalized', 'Position', [.1,.1,.5,.8]);
ax=gca;
ax.NextPlot = 'add';
ax.DataAspectRatio = [1,1,1];
ax.XColor = 'none';
ax.YColor = 'none';% 绘制椭圆花瓣
for i = 0:setNum-1iXY = rM^i*cXY;fill(iXY(1,:), iXY(2,:), CList(i+1,:), 'FaceAlpha', .4, 'EdgeColor', 'none');
end
% 绘制白色边缘线
if 1
for i = 0:setNum-1iXY = rM^i*cXY;plot(iXY(1,:), iXY(2,:), 'Color', 'w', 'LineWidth', 1.2);
end
end
fill(cos(cT).*2.3, sin(cT).*2.3, [1,1,1], 'EdgeColor', 'none')% 绘制文本信息
for i = 1:setNumtR = (i-1)*rT/pi*180;if tR>=0 && tR<=180tR = tR-90;elsetR = tR+90;endtext(cos((i-1)*rT).*13, sin((i-1)*rT).*13, num2str(uniq(i)),...'HorizontalAlignment', 'center',...'VerticalAlignment', 'middle',...'Rotation', tR,...numFont{:})text(cos((i-1)*rT).*17, sin((i-1)*rT).*17, setName{i},...'HorizontalAlignment', 'center',...'VerticalAlignment', 'middle',...'Rotation', tR,...labFont{:})
end
text(0, 0, {'core';num2str(core)},...'HorizontalAlignment', 'center',...'VerticalAlignment', 'middle',...labFont{:})

相关文章:

MATLAB | 情人节画个花瓣venn图?

之前七夕节情人节各种花&#xff0c;相册&#xff0c;爱心啥的都快画够了&#xff0c;今年画个花瓣韦恩图&#xff1f; 花瓣上的数字是仅属于该类的样本数&#xff0c;而中心的数字是属于每一类的样本数 教程部分 0 数据准备 % 给组起名t1 t2 t3...t15 setName compose(t%d,…...

[日常使用] Shell常用命令

Shell是什么&#xff1f; Shell简介 Shell是操作系统的外壳&#xff0c;是用户与操作系统内核之间的主要接口。它接收用户的命令并将其传递给内核执行&#xff0c;然后将执行结果返回给用户。Shell不仅是一个命令解释器&#xff0c;也是一种强大的编程语言。常见的Shell分为图…...

QT+OSG/osgEarth编译之八十七:osgdb_p3d+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_p3d)

文章目录 一、osgdb_p3d介绍二、文件分析三、pro文件四、编译实践一、osgdb_p3d介绍 P3DXML是Panda3D引擎中使用的一种文件格式,用于描述3D场景的层次结构和属性。它是一种基于XML(eXtensible Markup Language)的文本格式,可以被Panda3D引擎读取和解析。 P3DXML文件包含了…...

寒假 day13

1.请编程实现二维数组的杨慧三角 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) { int n,i,j;printf("please enter n:");scanf("%d",&n);int arr[n][n];for(i0;i<n;i){for(j0;j<i;j){if(j0 || ij…...

探索微信小程序的奇妙世界:从入门到进阶

文章目录 一、什么是微信小程序1.1 简要介绍微信小程序的定义和特点1.2 解释小程序与传统应用程序的区别 二、小程序的基础知识2.1 微信小程序的架构2.2 微信小程序生命周期的理解2.3 探索小程序的目录结构和文件类型 三、小程序框架和组件3.1 深入了解小程序框架的核心概念和原…...

容器库(4)-std::forward_list

std::forward_list是可以从任何位置快速插入和移除元素的容器&#xff0c;不支持快速随机访问&#xff0c;只支持正向迭代。 本文章的代码库&#xff1a; https://gitee.com/gamestorm577/CppStd 成员函数 构造、析构和赋值 构造函数 可以用元素、元素列表、迭代器或者另…...

Netty Review - 服务端channel注册流程源码解析

文章目录 PreNetty主从Reactor线程模型服务端channel注册流程源码解读入口 serverBootstrap.bind(port) 源码流程图 Pre Netty Review - ServerBootstrap源码解析 Netty Review - NioServerSocketChannel源码分析 Netty主从Reactor线程模型 Netty 使用主从 Reactor 线程模型…...

冒泡排序平均需要跑多少趟:拉马努金Q函数初探

摘要: 拉马努金Q函数在算法分析中的应用&#xff0c;初步体验 【对算法&#xff0c;数学&#xff0c;计算机感兴趣的同学&#xff0c;欢迎关注我哈&#xff0c;阅读更多原创文章】 我的网站&#xff1a;潮汐朝夕的生活实验室 我的公众号&#xff1a;算法题刷刷 我的知乎&#x…...

Shell 学习笔记(三)-shell变量

Shell 语言是一种动态类型和弱类型语言, 因此,在Shell中无需显示地声明变量, 且变量的类型会根据不同的操作符而发生变化. 静态类型语言: 在程序编译期间就确定变量类型的语言, 如java, C等 动态类型语言: 在程序运行期间才确定变量类型的语言, 如PHP, Python等. 一 shell变量…...

新冠:2022和2024两次新冠感染的对比

第一次 2022年底第一次放开管控&#xff0c;95%以上的人都感染了一次奥密克戎 症状 第一天&#xff1a;流涕&#xff0c;咽痛。 第二天&#xff1a;高烧40度&#xff0c;全身疼痛&#xff0c;动不了。没有胃口&#xff0c;头晕想吐。 吃了白加黑退烧药&#xff0c;清开灵颗粒…...

笔记:《NCT全国青少年编程能力等级测试教程Python语言编程二级》

NCT全国青少年编程能力等级测试教程Python语言编程二级 ISBN:9787302565857 绪论 专题1 模块化编程 考查方向 考点清单 考点 模块化编程 (一)模块化编程思想:结构清晰、降低复杂度;提高代码复用率;易于扩展、维护,方便阅读、优化。 …...

顶级思维方式——认知篇五(思想的觉醒)

目录 1、 女性的地位觉醒 2、电视剧《天道》之高人思维&#xff1a;丁元英为什么讲“人间黑白颠倒”&#xff1f; 3、 创业公司, 更应该大胆的创新. 4、 做到一定职务的时候&#xff0c; 你一定想到在你这个地位上你要做什么 1、 女性的地位觉醒 过去引以为鉴的例子&…...

面试技术栈 —— 2024网易雷火暑期实习真题

面试技术栈 —— 2024网易雷火暑期实习真题 1. 最长递增子序列。2. 集中限流和单机限流你觉得哪个好&#xff1f;3. redis部署服务器配置&#xff0c;为什么不用哨兵&#xff1f;4. 讲讲分布式session的原理。5. 数据库&#xff1a;表数据量大了&#xff0c;如何分表&#xff1…...

【小赛1】蓝桥杯双周赛第5场(小白)思路回顾

我的成绩&#xff1a;小白(5/6) 完稿时间&#xff1a;2024-2-13 比赛地址&#xff1a;https://www.lanqiao.cn/oj-contest/newbie-5/ 相关资料&#xff1a; 1、出题人题解&#xff1a;“蓝桥杯双周赛第5次强者挑战赛/小白入门赛”出题人题解 - 知乎 (zhihu.com) 2、矩阵快速幂&…...

docker (二)-yum二进制部署

yum安装docker&#xff08;Linux&#xff09; 安装环境&#xff1a;CentOS 7.9 一 如果之前安装了旧版docker&#xff0c;请先删除 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotat…...

【深度学习】S2 数学基础 P2 线性代数(下)

目录 范数的意义范数的数学意义范数之于深度学习的意义 L1 范数与 L2 范数L1 范数L2 范数 小结 本节博文是线性代数第二部分&#xff0c;主要内容为 L 1 L1 L1 范数与 L 2 L2 L2 范数&#xff1b;有关线性代数基础知识&#xff0c;请访问&#xff1a;【深度学习】S2 数学基础…...

【软考高级信息系统项目管理师--考试内容大纲篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;软考高级–信息系统项目管理师 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 软考高级信息系统项目管理师--考试内容大纲篇 1.信息化发展2.信息技术发展3.信息系…...

C语言——枚举类型

&#x1f4dd;前言&#xff1a; 在之前的文章中我们已经讲解了自定义类型中的结构体类型和联合体类型&#xff0c;现在我们再充分学习一下C语言中的枚举类型&#xff1a; 1&#xff0c;什么是枚举类型 2&#xff0c;枚举类型的定义和变量的声明 3&#xff0c;对变量进行赋值 &a…...

linux---内存管理

一 虚拟内存 即使是现代操作系统中&#xff0c;内存依然是计算机中很宝贵的资源&#xff0c;看看你电脑几个T固态硬盘&#xff0c;再看看内存大小就知道了。 为了充分利用和管理系统内存资源&#xff0c;Linux采用虚拟内存管理技术&#xff0c;利用虚拟内存技术让每个进程都有…...

v-model原理

v-model原理 v-model原理表单类组件封装v-model简化代码 v-model原理 1.原理&#xff1a; v-model本质上是一个语法糖。例如应用在输入框上&#xff0c;就是value属性 和 input 事件的合写 <template><div id"app" ><input v-model"msg"…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...