iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Matlab绘制散点密度图的教程详解
  • 669
分享到

Matlab绘制散点密度图的教程详解

2024-04-02 19:04:59 669人浏览 独家记忆
摘要

目录效果1工具函数完整代码2参数说明3使用方式3.1散点赋色3.2等高线图3.3带直方图的散点图3.4带直方图的等高线图4使用方式扩展–与ggplot修饰器联动效果

效果

原理也很简单,通过matlab自带的ksdensity获得网格每一点密度,通过密度拟合曲面,再计算每个数据点对应的概率,并将概率映射到颜色即可
为了怕大家找不到函数这次工具函数放到最前面

1工具函数完整代码

function [CData,h,XMesh,YMesh,ZMesh,colorList]=density2C(X,Y,XList,YList,colorList)
[XMesh,YMesh]=meshgrid(XList,YList);
XYi=[XMesh(:) YMesh(:)];
F=ksdensity([X,Y],XYi);
ZMesh=zeros(size(XMesh));
ZMesh(1:length(F))=F;

h=interp2(XMesh,YMesh,ZMesh,X,Y);
if nargin<5
colorList=[0.2700         0    0.3300
    0.2700    0.2300    0.5100
    0.1900    0.4100    0.5600
    0.1200    0.5600    0.5500
    0.2100    0.7200    0.4700
    0.5600    0.8400    0.2700
    0.9900    0.9100    0.1300];
end
colorFunc=colorFuncFactory(colorList);
CData=colorFunc((h-min(h))./(max(h)-min(h)));
colorList=colorFunc(linspace(0,1,100)');

function colorFunc=colorFuncFactory(colorList)
x=(0:size(colorList,1)-1)./(size(colorList,1)-1);
y1=colorList(:,1);y2=colorList(:,2);y3=colorList(:,3);
colorFunc=@(X)[interp1(x,y1,X,'pchip'),interp1(x,y2,X,'pchip'),interp1(x,y3,X,'pchip')];
end
end

2参数说明

输入:

  • X,Y 散点坐标
  • XList,YList 用来构造密度曲面网格的序列,其实就是把XLim,YLim分成小份,例如XList=0:0.1:10
  • colorList 颜色表mx3数组,用来构造将高度映射到颜色函数的数据表

输出:

  • CData各个点对应颜色
  • h 各个点对应核密度
  • XMesh,YMesh,ZMesh 核密度曲面数据
  • colorList 插值后更细密的颜色表

3使用方式

假如编写了如下程序:

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];
scatter(PntSet(:,1),PntSet(:,2),'filled');

结果:

3.1散点赋色

将上面那段代码改写

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];

CData=density2C(PntSet(:,1),PntSet(:,2),-2:0.1:15,-2:0.1:15);
scatter(PntSet(:,1),PntSet(:,2),'filled','CData',CData);

3.2等高线图

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];


[~,~,XMesh,YMesh,ZMesh,colorList]=density2C(PntSet(:,1),PntSet(:,2),-2:0.1:12,-2:0.1:12);
colORMap(colorList)
contourf(XMesh,YMesh,ZMesh,10)

3.3带直方图的散点图

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];

colorList=[0.9400    0.9700    0.9600
    0.8900    0.9300    0.9200
    0.8200    0.9100    0.8800
    0.6900    0.8500    0.7700
    0.5900    0.7800    0.6900
    0.5500    0.7500    0.6500
    0.4500    0.6500    0.5600
    0.4000    0.5800    0.4900
    0.3500    0.5100    0.4200
    0.2500    0.3600    0.3100
    0.1300    0.1700    0.1400];
CData=density2C(PntSet(:,1),PntSet(:,2),-2:0.1:15,-2:0.1:15,colorList);

set(GCf,'Color',[1 1 1]);

% 主分布图
ax1=axes('Parent',gcf);hold(ax1,'on')
scatter(ax1,PntSet(:,1),PntSet(:,2),'filled','CData',CData);
ax1.Position=[0.1,0.1,0.6,0.6];

% X轴直方图
ax2=axes('Parent',gcf);hold(ax2,'on')
histogram(ax2,PntSet(:,1),'FaceColor',[0.78 0.88 0.82],...
    'EdgeColor','none','FaceAlpha',0.7)
ax2.Position=[0.1,0.75,0.6,0.15];
ax2.YColor='none';
ax2.XTickLabel='';
ax2.TickDir='out';
ax2.XLim=ax1.XLim;

% Y轴直方图
ax3=axes('Parent',gcf);hold(ax3,'on')
histogram(ax3,PntSet(:,2),'FaceColor',[0.78 0.88 0.82],...
    'EdgeColor','none','FaceAlpha',0.7,'Orientation','horizontal')
ax3.Position=[0.75,0.1,0.15,0.6];
ax3.XColor='none';
ax3.YTickLabel='';
ax3.TickDir='out';
ax3.YLim=ax1.YLim;

3.4带直方图的等高线图

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];
colorList=[0.9300    0.9500    0.9700
    0.7900    0.8400    0.9100
    0.6500    0.7300    0.8500
    0.5100    0.6200    0.7900
    0.3700    0.5100    0.7300
    0.2700    0.4100    0.6300
    0.2100    0.3200    0.4900
    0.1500    0.2200    0.3500
    0.0900    0.1300    0.2100
    0.0300    0.0400    0.0700];
[~,~,XMesh,YMesh,ZMesh,colorList]=density2C(PntSet(:,1),PntSet(:,2),-2:0.1:13,-2:0.1:13,colorList);


set(gcf,'Color',[1 1 1]);
% 主分布图
ax1=axes('Parent',gcf);hold(ax1,'on')
colormap(colorList)
contourf(XMesh,YMesh,ZMesh,10,'EdgeColor','none')
ax1.Position=[0.1,0.1,0.6,0.6];
ax1.TickDir='out';

% X轴直方图
ax2=axes('Parent',gcf);hold(ax2,'on')
[f,xi]=ksdensity(PntSet(:,1));
fill([xi,xi(1)],[f,0],[0.34 0.47 0.71],'FaceAlpha',...
    0.3,'EdgeColor',[0.34 0.47 0.71],'LineWidth',1.2)
ax2.Position=[0.1,0.75,0.6,0.15];
ax2.YColor='none';
ax2.XTickLabel='';
ax2.TickDir='out';
ax2.XLim=ax1.XLim;

% Y轴直方图
ax3=axes('Parent',gcf);hold(ax3,'on')
[f,yi]=ksdensity(PntSet(:,2));
fill([f,0],[yi,yi(1)],[0.34 0.47 0.71],'FaceAlpha',...
    0.3,'EdgeColor',[0.34 0.47 0.71],'LineWidth',1.2)
ax3.Position=[0.75,0.1,0.15,0.6];
ax3.XColor='none';
ax3.YTickLabel='';
ax3.TickDir='out';
ax3.YLim=ax1.YLim;

4使用方式扩展–与ggplot修饰器联动

ggplot风格修饰器:(点击图片跳转链接)

示例1

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];

ax=gca;
ax.XLim=[-1 13];
ax.YLim=[-1 13];
ax=ggplotAxes2D(ax);

CData=density2C(PntSet(:,1),PntSet(:,2),0:0.1:15,0:0.1:15);
scatter(PntSet(:,1),PntSet(:,2),'filled','CData',CData);

是不是瞬间有那味了:

示例2

PntSet1=mvnrnd([2 3],[1 0;0 2],800);
PntSet2=mvnrnd([6 7],[1 0;0 2],800);
PntSet3=mvnrnd([8 9],[1 0;0 1],800);

PntSet=[PntSet1;PntSet2;PntSet3];

ax=gca;
ax.XLim=[-3 13];
ax.YLim=[-3 13];
ax=ggplotAxes2D(ax);

[~,~,XMesh,YMesh,ZMesh,colorList]=density2C(PntSet(:,1),PntSet(:,2),-2:0.1:12,-2:0.1:12);
colormap(colorList)
contourf(XMesh,YMesh,ZMesh,10)

以上就是Matlab绘制散点密度图的教程详解的详细内容,更多关于Matlab散点密度图的资料请关注编程网其它相关文章!

--结束END--

本文标题: Matlab绘制散点密度图的教程详解

本文链接: https://www.lsjlt.com/news/140647.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Matlab绘制散点密度图的教程详解
    目录效果1工具函数完整代码2参数说明3使用方式3.1散点赋色3.2等高线图3.3带直方图的散点图3.4带直方图的等高线图4使用方式扩展–与ggplot修饰器联动效果 ...
    99+
    2024-04-02
  • Matlab怎么绘制散点密度图
    小编给大家分享一下Matlab怎么绘制散点密度图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果原理也很简单,通过matlab自带的ksdensity获得网格每...
    99+
    2023-06-29
  • Python绘制散点图的教程详解
    少废话,直接上代码  import matplotlib.pyplot as plt import numpy as np # 1. 首先是导入包,创建数据 n = 10 ...
    99+
    2024-04-02
  • Python绘制散点密度图的三种方式详解
    目录方式一方式二方式三方式一 import matplotlib.pyplot as plt import numpy as np from scipy.stats import g...
    99+
    2024-04-02
  • matlab怎么绘制矩阵的散点图
    在MATLAB中,你可以使用`scatter`函数来绘制矩阵的散点图。这里有一个简单的示例来说明如何使用`scatter`函数绘制矩...
    99+
    2023-09-13
    matlab
  • Matlab实现二维散点主方向直方图的绘制详解
    目录工具函数基本使用多组数据修改配色精细修饰简简单单画个二维散点图主方向上的直方图: 工具函数 输入nx2大小的数组,返回以下四个图形对象: H1: ‘数据点&rsqu...
    99+
    2024-04-02
  • Matlab绘制中国地图超全教程详解
    目录各省边界线绘图省份填色图中国公路交通图中国铁路交通图中国河流图组合美化图美化图一美化图二依旧需要用到Mapping Toolbox不会安装的可以看我上一篇 虽然我们只读取shp文...
    99+
    2024-04-02
  • python怎么使用seaborn绘制直方图,密度图,散点图
    本文小编为大家详细介绍“python怎么使用seaborn绘制直方图,密度图,散点图”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么使用seaborn绘制直方图,密度图,散点图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-02
  • python散点图的绘制
    目录一、二维散点图的绘制1.采用pandas.plotting.scatter_matrix函数绘制2. 采用seaborn进行绘制二、 三维散点图绘制一、二维散点图的绘制 1.采用...
    99+
    2024-04-02
  • 利用Matlab绘制地图的超详细教程
    目录MappingToolbox工具箱安装局部区域陆地绘制映射贴图纹理贴图线路图绘制usamapaxesm一些地图绘制可用简易函数subplottightmap边框标签网格快速开关函...
    99+
    2024-04-02
  • Python matplotlib 绘制散点图详解建议收藏
    目录前言1. 散点图概述什么是散点图?散点图使用场景绘制散点图步骤案例展示 2. 散点图属性设置散点大小设置散点颜色设置散点样式设置透明度设置散点边框3. 添加折线散点图4. 多类型...
    99+
    2024-04-02
  • python使用seaborn绘图直方图displot,密度图,散点图
    目录一、直方图distplot()二、密度图2.1 单个样本数据分布密度图一、直方图distplot() import numpy as np import seaborn as ...
    99+
    2024-04-02
  • Pythonmatplotlib实现散点图的绘制
    目录一、整理数据二、修改点的样式三、呈现半透明的状态四、点呈现多彩的颜色五、让点的大小不一六、侧边呈现颜色卡七、改变集中性一、整理数据 import pandas as pd cn...
    99+
    2024-04-02
  • Python seaborn数据可视化绘图(直方图,密度图,散点图)
    目录前言一、直方图distplot()二、密度图1.单个样本数据分布密度图 2.两个样本数据分布密度图三、散点图1.jointplot()综合散点图2.拆分综合散点图Joi...
    99+
    2024-04-02
  • Python+Pyecharts实现散点图的绘制
    目录第1关:Scatter:散点图(一)编程要求代码测试说明第2关:Scatter:散点图(二)编程要求代码测试说明第3关:Scatter:散点图(三)编程要求代码测试说明第1关:S...
    99+
    2024-04-02
  • 解析matplotlib散点图绘制的简明步骤
    快速入门:matplotlib散点图绘制步骤解析 引言:matplotlib是一个强大的Python数据可视化库,可用于绘制各种类型的图表。其中,散点图是一种常用的图表类型,用于展示数据点之间的关系。本文将介绍使用matplot...
    99+
    2024-01-17
    散点图 快速入门
  • Matlab绘制雨云图的方法详解
    目录介绍横向雨云图纵向雨云图介绍 写了俩代码模板,用来绘制横向云雨图与纵向云雨图,云雨图其实就是用把小提琴图拆开来的模板,想获取小提琴图绘制函数的可以看这里:基于Matlab绘制小提...
    99+
    2024-04-02
  • 详解Matlab如何绘制桑基图
    目录详细用法1使用示例2输入参数3输出函数完整代码使用示例代码这次主要是分享自己写的一个函数,用来绘制桑基图,效果大概是下面这样子: 先说明函数(sankey2)怎么用,函数完...
    99+
    2024-04-02
  • 使用R语言绘制散点图结合边际分布图教程
    目录1. 使用ggExtra结合ggplot21)传统散点图2)密度函数3)直方图4)箱线图(宽窄的显示会有些问题)5)小提琴图(会有重叠,不建议使用)6)密度函数与直方图同时展现2...
    99+
    2024-04-02
  • Python绘制简单散点图的方法
    散点图,顾名思义是一些散乱的点构成的图。那么这些散乱的点有什么作用呢?散点图通过用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。 绘...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作