91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Matlab怎么繪制散點密度圖

發布時間:2022-02-28 09:15:18 來源:億速云 閱讀:630 作者:小新 欄目:開發技術

小編給大家分享一下Matlab怎么繪制散點密度圖,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    效果

    Matlab怎么繪制散點密度圖

    Matlab怎么繪制散點密度圖

    Matlab怎么繪制散點密度圖

    Matlab怎么繪制散點密度圖

    原理也很簡單,通過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');

    結果:

    Matlab怎么繪制散點密度圖

    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);

    Matlab怎么繪制散點密度圖

    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)

    Matlab怎么繪制散點密度圖

    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;

    Matlab怎么繪制散點密度圖

    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;

    Matlab怎么繪制散點密度圖

    4使用方式擴展&ndash;與ggplot修飾器聯動

    ggplot風格修飾器:(點擊圖片跳轉鏈接)

    Matlab怎么繪制散點密度圖

    示例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);

    是不是瞬間有那味了:

    Matlab怎么繪制散點密度圖

    示例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怎么繪制散點密度圖”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    中山市| 图木舒克市| 云浮市| 大竹县| 沁水县| 南漳县| 余姚市| 定兴县| 曲沃县| 哈巴河县| 禄劝| 蓬安县| 太康县| 藁城市| 玛曲县| 阿克| 吉木乃县| 佳木斯市| 南华县| 旌德县| 当阳市| 独山县| 唐山市| 花莲县| 朝阳区| 鸡西市| 武乡县| 孝义市| 乌鲁木齐县| 南昌县| 吴江市| 黄骅市| 蓝田县| 蓬莱市| 二手房| 水富县| 荔波县| 定陶县| 行唐县| 浦县| 乌拉特前旗|