MATLAB 一行代码应用ggtheme主题--boxchart版(框须图,箱线图)

2024-01-08 13:38

本文主要是介绍MATLAB 一行代码应用ggtheme主题--boxchart版(框须图,箱线图),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个比其他的难很多。。。
注: 至少需要 R2020a 版本才能使用,另外需要具有 Statistics and Machine Learning Toolbox 工具箱

1使用方式

假设你编写了如下程序:

x=randn(100,10);
boxchart(x)
legend('randn(100,10)')

在这里插入图片描述
加入一行:

x=randn(100,10);
boxchart(x)
legend('randn(100,10)')
ggThemeBox(gca,'flat_dark')

在这里插入图片描述
categorical 格式数组实例:

假设你编写了如下程序:

tbl = readtable('TemperatureData.csv');
monthOrder = {'January','February','March','April','May','June','July', ...'August','September','October','November','December'};
tbl.Month = categorical(tbl.Month,monthOrder);
boxchart(tbl.Month,tbl.TemperatureF,'GroupByColor',tbl.Year)
ylabel('Temperature (F)')
legend

在这里插入图片描述
最后面加一行:

tbl = readtable('TemperatureData.csv');
monthOrder = {'January','February','March','April','May','June','July', ...'August','September','October','November','December'};
tbl.Month = categorical(tbl.Month,monthOrder);
boxchart(tbl.Month,tbl.TemperatureF,'GroupByColor',tbl.Year)
ylabel('Temperature (F)')
legend
ggThemeBox(gca,'flat_dark');

在这里插入图片描述

2主题

主题有如下选择:
‘flat’/‘flat_dark’/‘camouflage’/‘chalk’/
‘copper’/‘dust’/‘earth’/‘fresh’/‘grape’/
‘grass’/‘greyscale’/‘light’/‘lilac’/‘pale’
‘sea’/‘sky’/‘solarized’
效果:
‘flat’
在这里插入图片描述

‘flat_dark’
在这里插入图片描述

‘camouflage’
在这里插入图片描述

‘chalk’
在这里插入图片描述

‘copper’
在这里插入图片描述

‘dust’
在这里插入图片描述

‘earth’
在这里插入图片描述

‘fresh’
在这里插入图片描述

‘grape’
在这里插入图片描述

‘grass’
在这里插入图片描述

‘greyscale’
在这里插入图片描述

‘light’
在这里插入图片描述

‘lilac’
在这里插入图片描述

‘pale’
在这里插入图片描述

‘sea’
在这里插入图片描述

‘sky’
在这里插入图片描述

‘solarized’
在这里插入图片描述

3完整代码

属性存到了.mat文件
文件下载地址:
链接:https://pan.baidu.com/s/1EMWVVzUCLP3RJIEK3Ljavg
提取码: ggtm

需要将.mat文件和函数放在同一个文件夹
完整代码:

function ax=ggThemeBox(varargin)
% @author:slandarer
% 
% 参数说明:
% -----------------------------------------------------
% AxesTheme   | 坐标区域风格       | 'flat'/'flat_dark'/'camouflage'/'chalk'/
%                                    'copper'/'dust'/'earth'/'fresh'/'grape'/
%                                    'grass'/'greyscale'/'light'/'lilac'/'pale'
%                                    'sea'/'sky'/'solarized'% 获取要处理的坐标区域=====================================================
if strcmp(get(varargin{1},'type'),'axes' )ax=varargin{1};
elseax=gca;
end
hold(ax,'on')% default==================================================================
theme.AxesTheme='flat';
if length(varargin)>1theme.AxesTheme=varargin{2};
endax.Box='off';
ax.YGrid='on';
ax.XGrid='on';
ax.GridLineStyle='--';
ax.LineWidth=1.3;
% 主题风格化
Tm=load('themeCSS.mat');
Tm=Tm.theme;
ax.Color=Tm.(theme.AxesTheme).Color;
ax.TickLength=Tm.(theme.AxesTheme).TickLength;
ax.GridColorMode=Tm.(theme.AxesTheme).GridColorMode;
ax.GridColor=Tm.(theme.AxesTheme).GridColor;
ax.GridAlpha=Tm.(theme.AxesTheme).GridAlpha;
ax.XColor=Tm.(theme.AxesTheme).XColor;
ax.YColor=Tm.(theme.AxesTheme).YColor;
ax.TickDir=Tm.(theme.AxesTheme).TickDir;
ax.ColorOrder=Tm.(theme.AxesTheme).ColorOrder;if ~isempty(ax.Legend)ax.Legend.Box='off';ax.Legend.FontSize=12;if mean(ax.Color)>0.6ax.Legend.TextColor=ax.XColor;elseax.Legend.TextColor=[0.9 0.9 0.9];endif ~isempty(regexpi(ax.Legend.Location,'out', 'once'))ax.Legend.TextColor=ax.XColor;ax.Legend.Title.FontSize=14;endax.Legend.AutoUpdate='off';
endn=1;
for i=length(ax.Children):-1:1ax.Children(i).Visible='on';ax.Children(i).WhiskerLineColor='none';ax.Children(i).BoxFaceColor=ax.ColorOrder(mod(n-1,size(ax.ColorOrder,1))+1,:);ax.Children(i).BoxFaceAlpha=1;axBp(i)=ax.Children(i);n=n+1;
endBw=axBp(1).BoxWidth;
Sw=1-Bw;
if length(axBp(1).XData(:))~=length(axBp(1).YData(:))n=1;for i=length(axBp):-1:1tDataX=axBp(i).XData;tDataY=axBp(i).YData;for j=1:length(axBp(i).XData)tjDataX=double(tDataX(j));fullDataY=tDataY(:,j);tjDataY=tDataY(:,j);if ~isempty(tjDataY)outliBool=isoutlier(tjDataY,'quartiles');outli=tjDataY(outliBool);scatter(ax,repmat(tjDataX,[sum(outliBool),1]),outli,45,'filled',...'CData',Tm.(theme.AxesTheme).EdgeColor,'MarkerEdgeColor','none')tjDataY(outliBool)=[];plot(ax,[tjDataX,tjDataX],[max(tjDataY),min(tjDataY)],'LineWidth',1.2,...'Color',Tm.(theme.AxesTheme).EdgeColor)qt25=quantile(fullDataY,0.25);qt75=quantile(fullDataY,0.75);fill(ax,tjDataX+Bw.*0.5.*[-1 1 1 -1],...[qt25,qt25,qt75,qt75],ax.ColorOrder(mod(n-1,size(ax.ColorOrder,1))+1,:),...'EdgeColor',Tm.(theme.AxesTheme).EdgeColor)med=median(fullDataY);plot(ax,[tjDataX-Bw.*0.5,tjDataX+Bw.*0.5],[med,med],'LineWidth',3,...'Color',Tm.(theme.AxesTheme).EdgeColor)endendn=n+1;end
elsen=1;nBw=Bw/length(axBp)/2;nSw=Sw/length(axBp)/2;for i=length(axBp):-1:1tDataX=axBp(i).XData;tDataY=axBp(i).YData;cgX=categories(tDataX);for j=1:length(cgX)fullDataY=tDataY(tDataX==cgX{j});tjDataY=tDataY(tDataX==cgX{j});if ~isempty(tjDataY)outliBool=isoutlier(tjDataY,'quartiles');outli=tjDataY(outliBool);tjDataX=j-(length(axBp)-1)*(nSw+nSw)+(length(axBp)-i)*2*(nSw+nSw);scatter(ax,repmat(tjDataX,[length(outli),1]),outli,45,'filled',...'CData',Tm.(theme.AxesTheme).EdgeColor,'MarkerEdgeColor','none')tjDataY(outliBool)=[];plot(ax,[tjDataX,tjDataX],[max(tjDataY),min(tjDataY)],'LineWidth',1.2,...'Color',Tm.(theme.AxesTheme).EdgeColor)qt25=quantile(fullDataY,0.25);qt75=quantile(fullDataY,0.75);fill(ax,tjDataX+nBw.*[-1 1 1 -1],...[qt25,qt25,qt75,qt75],ax.ColorOrder(mod(n-1,size(ax.ColorOrder,1))+1,:),...'EdgeColor',Tm.(theme.AxesTheme).EdgeColor)med=median(fullDataY);plot(ax,[tjDataX-nBw,tjDataX+nBw],[med,med],'LineWidth',3,...'Color',Tm.(theme.AxesTheme).EdgeColor)endendn=n+1;end
endend

这篇关于MATLAB 一行代码应用ggtheme主题--boxchart版(框须图,箱线图)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/583631

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,