如何利用Matlab繪制出好看的火山圖
這里畫(huà)了一個(gè)示例:
繪制效果:

代碼及說(shuō)明:
使用代碼時(shí)只需要改一開(kāi)始導(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è)置頗多,一切為了畫(huà)圖質(zhì)量hiahiahia,要是懶得設(shè)置建議直接發(fā)復(fù)制粘貼,有更強(qiáng)的審美的可以自行改寫(xiě)嗷。
如果希望顯示顯示坐標(biāo)區(qū)域外的點(diǎn),請(qǐng)使用如下代碼:
% 讀取數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C?與?C++?中的?const?常量與數(shù)組大小的關(guān)系對(duì)比分析
C和C++中數(shù)組大小通常要求是一個(gè)編譯時(shí)常量,C語(yǔ)言中,const變量不能直接作為數(shù)組大小,需要使用#define或enum,C++中,const變量被視為常量表達(dá)式,可以作為數(shù)組大小,本文介紹C?與?C++?中的?const?常量與數(shù)組大小的關(guān)系,感興趣的朋友一起看看吧2025-02-02
C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷源碼
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器詳解
因?yàn)樽罱e著無(wú)聊就想著要不用C++寫(xiě)點(diǎn)什么東西,仔細(xì)想了想其實(shí)自己的C++學(xué)的也不怎么好,寫(xiě)個(gè)簡(jiǎn)單的計(jì)時(shí)器吧!所以下面這篇文章主要介紹了利用C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無(wú)二的二叉搜索樹(shù)之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無(wú)二的二叉搜索樹(shù)之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語(yǔ)言實(shí)現(xiàn)變色進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)一個(gè)變色的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C語(yǔ)言實(shí)現(xiàn)航班售票系統(tǒng) C語(yǔ)言實(shí)現(xiàn)航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)航班售票系統(tǒng),C語(yǔ)言實(shí)現(xiàn)航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
php5系列的apache遠(yuǎn)程執(zhí)行漏洞攻擊腳本
這篇文章主要介紹了php5系列的apache遠(yuǎn)程執(zhí)行漏洞攻擊腳本,需要的朋友可以參考下2014-06-06

