如何利用Matlab繪制出好看的火山圖
這里畫了一個示例:
繪制效果:
代碼及說明:
使用代碼時只需要改一開始導(dǎo)入的數(shù)據(jù),和代碼提示中X坐標(biāo)區(qū)域范圍和Y坐標(biāo)區(qū)域范圍,完整代碼如下所示:
% 讀取數(shù)據(jù) data=readmatrix('volcano.txt'); logFC=data(:,2); padj=data(:,3); DB_not=(padj>0.5)|(logFC<0.5&logFC>-0.5); DB_up=padj<=0.05&logFC>=0.5; DB_down=padj<=0.05&logFC<=-0.5; ax=gca; hold(ax,'on'); grid(ax,'on'); % 需要適度調(diào)整的屬性:坐標(biāo)區(qū)域范圍及刻度=================================== ax.XLim=[-5,5]; ax.YLim=[-10,300]; ax.XTick=-5:2.5:5; ax.YTick=0:50:300; % ========================================================================= ax.XLabel.String='log_2(FoldChange)'; ax.XLabel.FontSize=14; ax.XLabel.FontName='Cambria'; ax.XLabel.FontWeight='bold'; ax.YLabel.String='-log_{10}(padj)'; ax.YLabel.FontSize=14; ax.YLabel.FontName='Cambria'; ax.YLabel.FontWeight='bold'; ax.Color=[235,235,235]./255; ax.GridColor=[1 1 1]; ax.LineWidth=1.4; ax.GridAlpha=0.5; ax.XColor=[44,62,80]./255; ax.YColor=[44,62,80]./255; Hdl_not=scatter(logFC(DB_not),-log(padj(DB_not))./log(10),30,'filled',... 'MarkerFaceColor',[190,190,190]./255,'MarkerEdgeColor',[190,190,190]./255,... 'MarkerFaceAlpha',0.6); Hdl_up=scatter(logFC(DB_up),-log(padj(DB_up))./log(10),30,'filled',... 'MarkerFaceColor',[196,88,62]./255,'MarkerEdgeColor',[196,88,62]./255,... 'MarkerFaceAlpha',0.6); Hdl_down=scatter(logFC(DB_down),-log(padj(DB_down))./log(10),30,'filled',... 'MarkerFaceColor',[1,114,182]./255,'MarkerEdgeColor',[1,114,182]./255,... 'MarkerFaceAlpha',0.6); plot([ax.XLim(1),ax.XLim(2)],[-log(0.05)/log(10),-log(0.05)/log(10)],... 'LineWidth',1.2,'Color',[.2,.2,.2],'LineStyle','-.') plot([-0.5,-0.5],[ax.YLim(1),ax.YLim(2)],... 'LineWidth',1.2,'Color',[.2,.2,.2],'LineStyle','-.') plot([0.5,0.5],[ax.YLim(1),ax.YLim(2)],... 'LineWidth',1.2,'Color',[.2,.2,.2],'LineStyle','-.') lgd=legend(ax,[Hdl_up,Hdl_not,Hdl_down],{'up','not','down'}); lgd.Title.String='threshold'; lgd.FontSize=12; lgd.Title.FontSize=13; lgd.EdgeColor=[44,62,80]./255; lgd.TextColor=[44,62,80]./230; lgd.FontName='Cambria'; lgd.Location='best';
可以看到各種參數(shù)設(shè)置頗多,一切為了畫圖質(zhì)量hiahiahia,要是懶得設(shè)置建議直接發(fā)復(fù)制粘貼,有更強(qiáng)的審美的可以自行改寫嗷。
如果希望顯示顯示坐標(biāo)區(qū)域外的點(diǎn),請使用如下代碼:
% 讀取數(shù)據(jù) data=readmatrix('volcano.txt'); logFC=data(:,2); padj=data(:,3); DB_not=(padj>0.5)|(logFC<0.5&logFC>-0.5); DB_up=padj<=0.05&logFC>=0.5; DB_down=padj<=0.05&logFC<=-0.5; ax=gca; hold(ax,'on'); grid(ax,'on'); % 需要適度調(diào)整的屬性:坐標(biāo)區(qū)域范圍及刻度=================================== ax.XLim=[-8,8]; ax.YLim=[-10,200]; ax.XTick=-5:2.5:5; ax.YTick=0:50:300; % ========================================================================== DB_down_out=(-log(padj)./log(10)>ax.YLim(2)&logFC<=-0.5)|logFC<ax.XLim(1); DB_down_out_Set=[logFC(DB_down_out),-log(padj(DB_down_out))./log(10)]; DB_down_out_Set(DB_down_out_Set(:,1)<ax.XLim(1),1)=ax.XLim(1); DB_down_out_Set(DB_down_out_Set(:,2)>ax.YLim(2),2)=ax.YLim(2); DB_up_out=(-log(padj)./log(10)>ax.YLim(2)&logFC>=0.5)|logFC>ax.XLim(2); DB_up_out_Set=[logFC(DB_up_out),-log(padj(DB_up_out))./log(10)]; DB_up_out_Set(DB_up_out_Set(:,1)>ax.XLim(2),1)=ax.XLim(2); DB_up_out_Set(DB_up_out_Set(:,2)>ax.YLim(2),2)=ax.YLim(2); % ========================================================================= ax.XLabel.String='log_2(FoldChange)'; ax.XLabel.FontSize=14; ax.XLabel.FontName='Cambria'; ax.XLabel.FontWeight='bold'; ax.YLabel.String='-log_{10}(padj)'; ax.YLabel.FontSize=14; ax.YLabel.FontName='Cambria'; ax.YLabel.FontWeight='bold'; ax.Color=[235,235,235]./255; ax.GridColor=[1 1 1]; ax.LineWidth=1.4; ax.GridAlpha=0.5; ax.XColor=[44,62,80]./255; ax.YColor=[44,62,80]./255; Hdl_not=scatter(logFC(DB_not),-log(padj(DB_not))./log(10),30,'filled',... 'MarkerFaceColor',[190,190,190]./255,'MarkerEdgeColor',[190,190,190]./255,... 'MarkerFaceAlpha',0.6); Hdl_up=scatter(logFC(DB_up),-log(padj(DB_up))./log(10),30,'filled',... 'MarkerFaceColor',[196,88,62]./255,'MarkerEdgeColor',[196,88,62]./255,... 'MarkerFaceAlpha',0.6); Hdl_down=scatter(logFC(DB_down),-log(padj(DB_down))./log(10),30,'filled',... 'MarkerFaceColor',[1,114,182]./255,'MarkerEdgeColor',[1,114,182]./255,... 'MarkerFaceAlpha',0.6); % -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - scatter(DB_up_out_Set(:,1),DB_up_out_Set(:,2),30,'filled','Marker','+',... 'MarkerFaceColor',[196,88,62]./255,'MarkerEdgeColor',[196,88,62]./255,... 'MarkerFaceAlpha',0.6,'LineWidth',1); scatter(DB_down_out_Set(:,1),DB_down_out_Set(:,2),30,'filled','Marker','+',... 'MarkerFaceColor',[1,114,182]./255,'MarkerEdgeColor',[1,114,182]./255,... 'MarkerFaceAlpha',0.6,'LineWidth',1); % -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - plot([ax.XLim(1),ax.XLim(2)],[-log(0.05)/log(10),-log(0.05)/log(10)],... 'LineWidth',1.2,'Color',[.2,.2,.2],'LineStyle','-.') plot([-0.5,-0.5],[ax.YLim(1),ax.YLim(2)],... 'LineWidth',1.2,'Color',[.2,.2,.2],'LineStyle','-.') plot([0.5,0.5],[ax.YLim(1),ax.YLim(2)],... 'LineWidth',1.2,'Color',[.2,.2,.2],'LineStyle','-.') lgd=legend(ax,[Hdl_up,Hdl_not,Hdl_down],{'up','not','down'}); lgd.Title.String='threshold'; lgd.FontSize=12; lgd.Title.FontSize=13; lgd.EdgeColor=[44,62,80]./255; lgd.TextColor=[44,62,80]./230; lgd.FontName='Cambria'; lgd.Location='best';
到此這篇關(guān)于如何利用Matlab繪制出好看的火山圖的文章就介紹到這了,更多相關(guān)Matlab繪制火山圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++使用ffmpeg實(shí)現(xiàn)rtsp取流的代碼
這篇文章主要介紹了C++使用ffmpeg實(shí)現(xiàn)rtsp取流,文章介紹了ffmepg采用rtsp取流流程圖,CMakeLists.txt編寫方法,通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04C語言判斷數(shù)是否為素數(shù)與素數(shù)輸出
大家好,本篇文章主要講的是C語言判斷數(shù)是否為素數(shù)與素數(shù)輸出,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12