ggplot2|从0开始绘制折线图

简介: ggplot2|从0开始绘制折线图

本文首发于“生信补给站”公众号 ggplot2|从0开始绘制折线图

   话说“一图胜千言”,在各类数据分析报告中经常会看见各种各样的图形,例如折线图、条形图、箱线图、点图等。

其中折线图可以反映某种现象的趋势,本文利用R语言的ggplot2包,从头带您绘制各式各样的线形图。


一  绘制单条折线图

载入数据及函数包


library(ggplot2)
df <- data.frame(dose=c("A", "B", "C"), len=c(5.16, 10.10, 30))
head(df)
  dose   len
1    A  5.16
2    B 10.10
3    C 30.00


1.1  绘制基本的折线图


ggplot(data=df, aes(x=dose, y=len, group=1)) +geom_line()

image.png


1.2 添加点,并更改线型 和颜色


ggplot(data=df, aes(x=dose, y=len, group=1)) +geom_line(linetype = "dashed",color="red")+ geom_point()

image.png


1.3 添加箭头


library(grid)
ggplot(data=df, aes(x=dose, y=len, group=1))+geom_line(arrow = arrow())+geom_point()
#自定义箭头类型
myarrow=arrow(angle = 15, ends = "both", type = "closed")
ggplot(data=df, aes(x=dose, y=len, group=1)) +geom_line(arrow=myarrow)+geom_point()


1.4 附赠



ggplot(data=df, aes(x=dose, y=len, group=1)) + geom_step()+ geom_point()


注:因为横坐标的属性为因子(离散型的字符转换为因子),所以需要添加‘group = 1’的设置。


二 绘制多条折线图

设置数据


df2 <- data.frame(supp=rep(c("Case", "Control"), each=3), dose=rep(c("A", "B", "C"),2),len=c(6.8, 15, 38, 5.16, 10.10, 30))
head(df2)
     supp dose   len
1    Case    A  6.80
2    Case    B 15.00
3    Case    C 38.00
4 Control    A  5.16
5 Control    B 10.10
6 Control    C 30.00


2.1 绘制多条折线图,更改线型




    ggplot(data=df2, aes(x=dose, y=len, group=supp))+
      geom_line(linetype="dashed", color="blue", size=1.2)+
      geom_point(color="red", size=3)

    image.png



    2.2 分组更改线型和点的形状


    ggplot(df2, aes(x=dose, y=len, group=supp)) +
      geom_line(aes(linetype=supp))+
      geom_point(aes(shape=supp))



    2.3 自定义更改线型


    ggplot(df2, aes(x=dose, y=len, group=supp)) +
      geom_line(aes(linetype=supp))+
      geom_point()+
      scale_linetype_manual(values=c("twodash", "dotted"))

    2.4 更改颜色


    p <- ggplot(df2, aes(x=dose, y=len, group=supp)) +
      geom_line(aes(color=supp))+
      geom_point(aes(color=supp))
    p

    image.png


    其他自定义颜色方式:


    # Use custom color palettes
    p+scale_color_manual(values=c("#E69F00", "#56B4E9"))
    # Use brewer color palettes
    p+scale_color_brewer(palette="Dark2")
    # Use grey scale
    p +scale_color_grey() + theme_classic()


    image.png


    2.5 添加误差棒

    利用ToothGrowth数据集,首先分组计算每一分组的均值和标准差,整理成如下格式:


    supp dose   len       sd
    1   OJ  0.5 13.23 4.459709
    2   OJ  1.0 22.70 3.910953
    3   OJ  2.0 26.06 2.655058
    4   VC  0.5  7.98 2.746634
    5   VC  1.0 16.77 2.515309
    6   VC  2.0 26.14 4.797731

    绘制添加误差棒的折线图


    ggplot(df3, aes(x=dose, y=len, group=supp, color=supp)) + 
        geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1) +
        geom_line() +geom_point()+
       scale_color_brewer(palette="Paired")+theme_minimal()


    注:可以使用position_dodge 参数,防止errorbars重叠


    三 折线图汇总展示


    ggplot(df3, aes(x=dose, y=len, group = supp, color=supp))+ 
        geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1, 
        position=position_dodge(0.05)) +
        geom_line(aes(linetype=supp)) + 
        geom_point(aes(shape=supp))+
        labs(title="Plot of lengthby dose",x="Dose (mg)", y = "Length")+
        theme_classic()+
    scale_color_manual(values=c('#999999','#E69F00'))


    image.png


    四 参考资料

    ggplot2:数据分析与图形艺术

    http://www.sthda.com/english/wiki/ggplot2-essentials


    好了,就是这么简单,输出基本图形后,根据自己的喜好进行细节的调整即可

    相关文章
    解决Xshell,Xftp评估期已过期
    解决Xshell,Xftp评估期已过期
    2160 0
    解决Xshell,Xftp评估期已过期
    |
    9月前
    Vuex中改变store状态值的方法是什么?为什么?
    Vuex中改变store状态值的方法是什么?为什么?
    212 1
    |
    9月前
    |
    数据可视化 Python
    堆叠柱状图(pyecharts足矣 既好看又简单
    堆叠柱状图(pyecharts足矣 既好看又简单
    510 0
    |
    9月前
    |
    边缘计算 JSON 物联网
    解锁业务灵活性:RuleGo规则引擎的高效解耦与实时响应秘籍
    RuleGo是一个基于Go语言的轻量级、高性能规则引擎,旨在通过动态规则链和组件化设计,简化复杂系统的业务逻辑管理和实时响应。
    解锁业务灵活性:RuleGo规则引擎的高效解耦与实时响应秘籍
    |
    9月前
    |
    JavaScript vr&ar
    vue3通过ref获取dom元素并修改样式
    vue3通过ref获取dom元素并修改样式
    701 0
    |
    数据挖掘
    Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
    Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
    1809 0
    Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
    |
    人工智能 数据可视化 Go
    R绘图实战|GSEA富集分析图
    GSEA(Gene Set EnrichmentAnalysis),即基因集富集分析,它的基本思想是使用预定义的基因,将基因按照在两类样本中的差异表达程度排序,然后检验预先设定的基因集合是否在这个排序表的顶端或者底端富集。
    2793 0
    R绘图实战|GSEA富集分析图
    |
    6月前
    |
    机器学习/深度学习 数据采集 算法
    【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
    本文介绍了一个基于Python的时间序列模型,用于分析和预测2021-2022年重庆地区的气温变化趋势,通过ARIMA和LSTM模型的应用,揭示了气温的季节性和趋势性变化,并提供了对未来气温变化的预测,有助于气象预报和相关决策制定。
    200 1
    【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
    |
    9月前
    |
    机器学习/深度学习 算法 算法框架/工具
    带你一文搞懂CNN以及图像识别(Python)
    带你一文搞懂CNN以及图像识别(Python)
    477 1
    |
    8月前
    |
    JavaScript 前端开发
    vue filters过滤器传多个参数
    这段内容展示了如何在HTML和JavaScript中使用过滤器(filter)。在HTML中,通过`{{变量 | 过滤器名(参数)}}`的方式传递参数给过滤器。在JavaScript中,定义过滤器函数并接收参数,如`filterAa(aa, bb, cc)`,其中`aa`, `bb`, `cc`分别代表过滤器接收到的第1至第3个参数。示例逐步演示了传1个、2个到3个参数给过滤器的过程。
    524 1

    热门文章

    最新文章