【可视化】基于Matlab实现饼图的心形图例(福利)

 ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,

完整代码、论文复现、期刊合作、论文辅导及科研仿真合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab完整代码及仿真定制内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

🔥 内容介绍

在数据可视化领域,饼图是一种常用的图表类型,用于展示各个部分在整体中所占比例。然而,在某些特殊场景下,我们可能需要为饼图添加一些创意元素,以增加其吸引力和趣味性。其中,心形图例就是一种常见的创意元素,它可以在饼图中呈现出一个可爱的心形。

本篇博文将介绍一种实现饼图的心形图例的算法步骤,让您能够轻松地在自己的数据可视化项目中应用这一创意元素。

步骤一:准备数据 首先,我们需要准备饼图所需的数据。假设我们有一组数据,表示不同类别的占比,例如A类占比30%,B类占比20%,C类占比50%。

步骤二:计算角度 根据数据的占比,我们可以计算出每个类别所对应的角度。在饼图中,每个类别所占的角度等于其占比乘以360度。在我们的例子中,A类占比30%,则对应的角度为30% * 360 = 108度。

步骤三:绘制饼图 根据计算得到的角度,我们可以开始绘制饼图。首先,我们需要确定饼图的中心点和半径。中心点可以选择在图表的中心位置,半径则可以根据具体需求进行调整。接下来,我们可以按照计算得到的角度,依次绘制每个类别所占的扇形区域。

步骤四:绘制心形图例 在饼图中添加心形图例需要进行一些额外的计算和绘制。首先,我们需要确定心形的大小和位置。心形的大小可以根据具体需求进行调整,位置则可以选择在饼图的中心或其他合适的位置。接下来,我们可以使用曲线和圆弧等基本图形元素,按照一定的算法绘制心形。

步骤五:填充颜色和添加标签 完成饼图和心形图例的绘制后,我们可以为每个类别的扇形区域填充不同的颜色,以增加图表的可读性和美观性。同时,我们还可以在每个扇形区域中添加标签,显示该类别的具体占比或其他相关信息。

步骤六:添加动画效果(可选) 如果需要进一步增加图表的吸引力,我们可以为饼图和心形图例添加一些动画效果。例如

📣 完整代码

clc; clear; close all% 生成随机点(Generate random points)X = [11 13 2.5 2.5 11];pieHdl = pie(X);% 修饰饼状图(Decorate pie chart)colorList=[0.4941    0.5490    0.4118    0.3059    0.1510    0.133    0.4980    0.2157    0.280    0.8302    0.5137    0.4667    0.4275    0.1824    0.4784];for i = 1:2:length(pieHdl)    pieHdl(i).FaceColor=colorList((i+1)/2,:);    pieHdl(i).EdgeColor=colorList((i+1)/2,:);    pieHdl(i).LineWidth=1;    pieHdl(i).FaceAlpha=.6;endfor i = 2:2:length(pieHdl)    pieHdl(i).FontSize=11;    pieHdl(i).FontName='Times New Roman';endlgd=legend('FontSize',11,'FontName','Times New Roman','TextColor',[1,1,1].*.3);pie2HeartLegend(lgd)
function pie2HeartLegend(lgd)% =========================================================================if nargin<1    ax = gca;    lgd = get(ax,'Legend');endpause(1e-6)% 心形曲线(Heart curve)x = -1:1/100:1;y1 = 0.6 * abs(x) .^ 0.5 + ((1 - x .^ 2) / 2) .^ 0.5;y2 = 0.6 * abs(x) .^ 0.5 - ((1 - x .^ 2) / 2) .^ 0.5;XX = [x, flip(x),x(1)]./3.4+.5;YY = ([y1, y2,y1(1)]-.2)./2+.5;Ind = [1:(length(XX)-1);2:length(XX)];Ind = Ind(:).';% 获取图例图标(Get Legend Icon)lgdEntryChild = lgd.EntryContainer.NodeChildren;iconSet = arrayfun(@(lgdEntryChild)lgdEntryChild.Icon.Transform.Children.Children,lgdEntryChild,UniformOutput=false);% 基础边框句柄(Base Border Handle)newEdgeHdl = matlab.graphics.primitive.world.LineStrip();newEdgeHdl.AlignVertexCenters = 'off';newEdgeHdl.Layer = 'front';newEdgeHdl.ColorBinding = 'object';newEdgeHdl.LineWidth = .8;newEdgeHdl.LineJoin = 'miter';newEdgeHdl.WideLineRenderingHint = 'software';newEdgeHdl.ColorData = uint8([38;38;38;0]);newEdgeHdl.VertexData = single([XX;YY;XX.*0]);newEdgeHdl.VertexIndices = uint32(Ind);% 基础多边形面句柄(Base Patch Handle)newFaceHdl = matlab.graphics.primitive.world.TriangleStrip();Ind = [1:(length(XX)-1);ones(1,length(XX)-1).*(length(XX)+1);2:length(XX)];Ind = Ind(:).';newFaceHdl.PickableParts = 'all';newFaceHdl.Layer = 'middle';newFaceHdl.ColorBinding = 'object';newFaceHdl.ColorType = 'truecoloralpha';newFaceHdl.ColorData = uint8(255*[1;1;1;.6]);newFaceHdl.VertexData = single([XX,.5;YY,.5;XX.*0,0]);newFaceHdl.VertexIndices = uint32(Ind);% 替换图例图标(Replace Legend Icon)for i = 1:length(iconSet)    oriEdgeHdl = iconSet{i}(1);    tNewEdgeHdl = copy(newEdgeHdl);    tNewEdgeHdl.ColorData = oriEdgeHdl.ColorData;    tNewEdgeHdl.Parent = oriEdgeHdl.Parent;    oriEdgeHdl.Visible = 'off';    oriFaceHdl = iconSet{i}(2);    tNewFaceHdl = copy(newFaceHdl);    tNewFaceHdl.ColorData = oriFaceHdl.ColorData;    tNewFaceHdl.Parent = oriFaceHdl.Parent;    oriFaceHdl.Visible = 'off';endend

⛳️ 运行结果

​ 🎈 部分理论引用网络文献,若有侵权联系博主删除

🎁  关注我领取海量matlab电子书和数学建模资料

👇  私信完整代码、论文复现、期刊合作、论文辅导及科研仿真定制

1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
4 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化
5 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
6 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
7 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
8 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
9 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值