ggplot第七篇 标度进阶

作者: 小洁忘了怎么分身 | 来源:发表于2018-08-29 23:13 被阅读106次
    微信公众号生信星球同步更新我的文章

    1.示例数据

    在公众号回复:dexp.csv,获得示例数据。
    示例数据:40个基因,每个基因9个重复,加上这9个重复各自的观测值,以及每个基因的长度。

    2.读取数据

    dexp <- read.csv("dexp.csv",row.names = 1)#设置第一列为行名
    

    做散点图-以此为基础进行标度的修改练习

    library(ggplot2)
    p<-ggplot(data = dexp, aes(x = Gene, y = Expression)) 
    pp <-p+geom_point(aes(color = Sample,
                       size = Expression,
                       shape = Group),
                   alpha = 8/10)#透明度是80%
    
    散点图--默认的样子

    3.修改标度

    关于标度、引导元素、图例、标签的定义如果你还不会,参考ggplot第六篇教程。

    修改一:引导元素名称,参数name

    ppname <- pp+ scale_x_discrete(name = "doudouGene") +
      scale_y_continuous(name = "huahuaExpression") +
      scale_color_hue(name = "doudouSample") +
      scale_size_continuous(name = "huahualength")
    
    修改引导元素名称后
    #后来继续学了一下,这个原来是有简单方法的,而且还可以写中文
    ppname <- pp + labs(x = "豆豆", y = "花花", 
             color = "嘻嘻", size = "哈哈",shape="你看啥") #简单的写法
    
    修改引导元素名称的简单方法

    修改二:改标签,参数labels

    在第六篇中的修改2,只修改了x轴的标签(坐标):参数lables,这里补充其他标签的修改方法。
    (1)初阶:修改x轴标签(也就是坐标)

    pplabel <- pp + scale_x_discrete(labels = c(1:40))
    
    修改横坐标刻度后

    (2)中阶:修改其他标签
    这里涉及到一个必会的知识点:离散型变量和连续型变量(discrete),通俗的解释就是字符算是离散型,数字算是连续型(continuous)
    y轴坐标是数字,所以只能改数字的格式,有四种格式可以改:

    • comma 每隔三位数显示逗号的格式
    • percent 百分数
    • dollar 美元
    • scientific 科学计数法
      修改连续型变量需要加载一个scales包(我已经忘了是不是自带的了。。)
    library(scales)
    pplabel2 <- ppname + scale_x_discrete(labels = c(1:40))+ 
      scale_y_continuous(labels = dollar) +
      scale_color_hue(labels = paste("doudou",seq(1,9),sep=""))+
      scale_size_continuous(labels =scientific)+
      scale_shape_discrete(labels=c("huahua1","huahua2","huahua3"))
    
    代码是我反复试出来的,不准直接盗走,要学会哦
    注意一个问题:
    这里的+是写在上一行末尾,不是写在第一行开头,否则就会报错,比如:
    代码不重要,看报错
    R的报错很任性,很严谨,而且还很有用。我喜欢_

    修改3:定义域和值域,参数limits

    pplim1 <- pp+ scale_x_discrete(limits = paste("G",seq(5,9),sep="")) +  #只显示5-9
                 scale_y_continuous(limits = c(500, 1500))#只显示小于500-1500的-复杂的写法
    

    还有一个简化的命令

    pplim2 <- pp + xlim(paste("G",seq(5,9),sep="")) +#简单的写法
        ylim(500, 1500)
    
    修改了横纵坐标的取值范围,也就是定义域和值域

    然后会出现一个警告信息,注意是警告不是报错


    有325行的数值没做进图里,也就是少了325个点

    这些点是pp这个图里的一部分,那对应哪一块呢?


    修改4:设置显示的刻度(breaks)


    这个例子是为了让你看清楚这个操作只是隐藏或者增加了一些刻度,在实际应用中,比如x轴坐标隔一个显示一个,或者改变y轴的刻度跨度等等,还是比较实用的。

    ppbreak <- pp + scale_x_discrete( breaks =  paste("G",seq(5,9),sep=""))+  #只是动了坐标轴,全部显示
    scale_y_continuous(breaks = seq(500,1500, by=100))#500-1500 #每一百设置一个刻度
    

    想要学好R语言一定要手持一本《R数据科学》,因为啃完这本书就可以掌握80%的R语言技能!
    当当8.28-9.3在做活动优惠价83.4一本


    扫码购书

    另外生信技能树做了啃这本书的知识星球,大咖云集带你上树~~~


    星主就是我本尊啦

    相关文章

      网友评论

        本文标题:ggplot第七篇 标度进阶

        本文链接:https://www.haomeiwen.com/subject/empkwftx.html