这里画了一个示例:
数据来源:http://blog.genesino.com/2017/07/volcanoPlot/
绘制效果:


代码及说明:
使用代码时只需要改一开始导入的数据,和代码提示中X坐标区域范围和Y坐标区域范围,完整代码如下所示:

% 读取数据
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');% 需要适度调整的属性:坐标区域范围及刻度===================================
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';

可以看到各种参数设置颇多,一切为了画图质量hiahiahia,要是懒得设置建议直接发复制粘贴,有更强的审美的可以自行改写嗷。

如果希望显示显示坐标区域外的点,请使用如下代码:

% 读取数据
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');% 需要适度调整的属性:坐标区域范围及刻度===================================
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';

如何使用MATLAB绘制出好看的火山图相关推荐

  1. ps里面怎么插入流程图_学会这3个方法,5分钟能绘制出好看又高级的流程图

    工作中,很多时候我们需要绘制流程图,有些小伙伴觉得流程图很难画,费时又耗力.那么今天小编就来给大家分享3种绘制流程图的方法,希望大家学会后,都能快速画出好看的流程图.下面就一起来看看吧~ 一.Exce ...

  2. ps里面怎么插入流程图_流程图很难画?学会这3个方法,5分钟能绘制出好看又高级的流程图...

    工作中,很多时候我们需要绘制流程图,有些小伙伴觉得流程图很难画,费时又耗力.那么今天小编就来给大家分享3种绘制流程图的方法,希望大家学会后,都能快速画出好看的流程图.下面就一起来看看吧~ 一.Exce ...

  3. matlab相关性分析频谱_利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]

    <利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]>由会员分享,可在线阅读,更多相关<利用Matlab绘制正弦信号的频谱图并做相关分析[共6页](6页珍藏版)>请在人 ...

  4. 2021-02-28 Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图

    Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图 function [t,frequency,f_spectrum]=fft_s(y,windowlength,Fs) % 输入 : % ...

  5. Matlab 绘制双纵轴三纵轴图

    三纵轴图 三坐标的图在前文中有所介绍:这次主要讲绘制双轴. matlab 绘制三坐标(轴)图 绘制双纵轴图: yyaxis 简单用法 在MATLAB中,yyaxis可以用于绘制具有两个不同y轴的图形. ...

  6. 如何用PPT画出好看的科研图

    前言 好看的科研图可以从前人的作品中进行借鉴,今天介绍2副精美的科研图以及他们在PPT中的绘制方法,话不多说,先摆上标准科研图 1. 黑色粗体边框以及淡填充颜色 黑色粗体边框和淡填充颜色真的让矩形一下 ...

  7. 数学建模——matlab绘制 地图 散点图连线图 (运用plot、scatter、struct、xlsread等函数)【全文8000字】

      因为对matlab绘图函数不熟悉,整整花了6个多小时,才终于绘制出了封面那张理想的图.

  8. 如何使用Matlab绘制常见的K线图(蜡烛图)

    Author Bryce230 e-mail 2540892461@qq.com Software win10,Matlab2018a 关于画K线图,Matlab有一个自带的函数candle,画图效率 ...

  9. Matlab绘制方向和速度矢量图

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  10. 用matlab画出漂亮的组合图,折线图加柱状图,论文用图

    效果如下:(转发请标明出处) % 定义线上点的x坐标 x = 1:1:5; %第一个1是起始端点,中间的是步长,最后一个是结束端点 %纵坐标 samp1 = [0.999 0.9 0.5 0.1221 ...

最新文章

  1. 高糊视频秒变4K,速度快了9倍!东南大学提出新的视频超分辨率系统
  2. SQL Server中的标识列
  3. 【一周入门MySQL—2】单表查询
  4. hadoop3.0.0 源码阅读之一:IPC Client部分
  5. android 页面过渡动画,Activity过渡动画的实现方法
  6. 排序算法02--冒泡排序
  7. php导出excel时间错误(同一个时间戳,用date得到不同的时间)
  8. 配置静态路由下一跳为本地出战接口和IP地址的区别
  9. c++访问数据库代码示例 occi_使用Python操作SQL Server数据库
  10. XP搭建winwebmail具体步骤
  11. 搭建高性能计算环境(九)、应用软件的安装之gaussian 09
  12. java-设置电脑音量
  13. ClickHouse 创建数据库建表视图字典 SQL
  14. pos机刷卡显示冲正中是什么意思?如何解决
  15. 微信小程序直接打开文件操作(pdf)
  16. 数据分析与挖掘建模(理论知识)
  17. 计算机的数学思想源头(回复“计算机数学”可下载PDF典藏版)
  18. Beta阶段敏捷冲刺前准备
  19. hdu 1677 Nested Dolls 子串
  20. 【自学笔记】尚硅谷数据结构与算法Chapter 3 链表

热门文章

  1. 利用栈来完成表达式求值
  2. CFA大起底:三百六十度无死角详解CFA到底是个啥?
  3. P4与5G UPF实践
  4. css音乐播放器插件,jQuery MPlayer音乐播放器插件
  5. windows安装VS2015
  6. 聊聊CMSIS-RTOS是什么东东
  7. treeTable v 1.4.2
  8. 如何让paraview GUI软件启动时不弹出Welcome to paraview窗口
  9. 傅里叶分析(通俗解释)
  10. 解决VS 2017/2019社区版无法登陆的方法