網站首頁 編程語言 正文
寫了個matlab繪制小提琴圖的函數:
1.圖中小提琴狀區域為核密度曲線
2.白色方塊為25%,75%分位數
3.中間橫線為中位數
4.白色點為離群值點
5.豎著的黑線是去掉離群值點后點的上下限
1使用示例
基礎使用,Y為矩陣
X=1:5; Y=randn(100,5); Hdl1=violinChart(gca,X,Y,[0 0.447 0.741],0.6);
- X:橫坐標
- Y:數據集
- FaceColor :顏色,示例用的是[0 0.447 0.741]
- width : 小提琴圖寬度,這里取的是0.6,就是以兩個小提琴圖間距的0.6倍為概率密度的上限1
基礎使用,Y為向量,X為標簽
X=[1.*ones(1,50),2.*ones(1,30),3.*ones(1,20),4.*ones(1,50),5.*ones(1,50)]; Y=randn(1,200)+sin(X); Hdl=violinChart(gca,X,Y,[0 0.447 0.741]);
基礎使用多個圖像繪制,并添加圖例
X1=[1:2:7,13]; Y1=randn(100,5)+sin(X1); X2=2:2:10; Y2=randn(100,5)+cos(X2); figure Hdl1=violinChart(gca,X1,Y1,[0 0.447 0.741]); Hdl2=violinChart(gca,X2,Y2,[0.850 0.325 0.098]); legend([Hdl1.F_legend,Hdl2.F_legend],{'randn+sin(x)','randn+cos(x)'});
2完整代碼
function Hdl=violinChart(ax,X,Y,FaceColor,width) % @author slandarer % Hdl: 返回的圖形對象句柄結構體 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % Hdl.F_density(i) | patch | 核密度分布 % Hdl.F_outlier(i) | scatter | 離群值點 % Hdl.F_range95(i) | line | 去除離群值點后最大值及最小值 % Hdl.F_quantile(i) | patch | 四分位數框 % Hdl.F_medianLine(i)| line | 中位數 % % Hdl.F_legend | patch | 用于生成legend圖例的圖形對象 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % 請使用如下方式生成圖例: % Hdl1=violinChart(ax,X,Y,... ...) % Hdl2=violinChart(ax,X,Y,... ...) % ... ... % legend([Hdl1,Hdl2,... ...],{Name1,Name2,...}) % =========================================================== % 以下為使用實例代碼: % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % X1=[1:2:7,13]; % Y1=randn(100,5)+sin(X1); % X2=2:2:10; % Y2=randn(100,5)+cos(X2); % % Hdl1=violinChart(gca,X1,Y1,[0 0.447 0.741],0.5); % Hdl2=violinChart(gca,X2,Y2,[0.850 0.325 0.098],0.5); % legend([Hdl1.F_legend,Hdl2.F_legend],{'randn+sin(x)','randn+cos(x)'}); if nargin<5 width=0.4; end if ~isempty(ax) else ax=gca; end hold(ax,'on'); oriX=X; X=unique(X); sep=min(diff(X)); if isempty(sep) sep=1; end for i=1:length(X) if length(oriX)==numel(Y) tY=Y(oriX==X(i)); else tY=Y(:,i); end [f,yi]=ksdensity(tY); Hdl.F_density(i)=fill([f,-f(end:-1:1)].*sep.*width+X(i),[yi,yi(end:-1:1)],FaceColor); outliBool=isoutlier(tY,'quartiles'); outli=tY(outliBool); Hdl.F_outlier(i)=scatter(repmat(X(i),[length(outli),1]),outli,20,'filled',... 'CData',[1 1 1],'MarkerEdgeColor','none'); nY=tY(~outliBool); Hdl.F_range95(i)=plot([X(i),X(i)],[min(nY),max(nY)],'k','lineWidth',1); qt25=quantile(tY,0.25); qt75=quantile(tY,0.75); Hdl.F_quantile(i)=fill(X(i)+0.6.*sep.*width.*[-1 1 1 -1].*max(f),... [qt25,qt25,qt75,qt75],[1 1 1],... 'EdgeColor',[0 0 0]); med=median(tY); Hdl.F_medianLine(i)=plot(X(i)+0.6.*sep.*width.*[-1 1].*max(f),[med,med],'LineWidth',3,... 'Color',[0 0 0]); end Hdl.F_legend=Hdl.F_density(1); end
原文鏈接:https://blog.csdn.net/slandarer/article/details/120325896
相關推薦
- 2022-10-08 ASP.NET堆和棧四之對托管和非托管資源的垃圾回收和內存分配_實用技巧
- 2023-02-09 C++開發protobuf動態解析工具_C 語言
- 2022-09-16 記一次SQL優化的實戰記錄_數據庫其它
- 2022-05-20 python字符串常見使用操作方法介紹_python
- 2022-05-13 linq中的限定操作符_實用技巧
- 2022-09-26 React?Native?中添加自定義字體的方法_React
- 2022-06-09 詳解Python中*args和**kwargs的使用_python
- 2022-12-06 Python+Pygame實現代碼雨動畫效果_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支