美文网首页R小技巧
ggplot2作图设置坐标轴的起始位置

ggplot2作图设置坐标轴的起始位置

作者: 护旗小能手 | 来源:发表于2020-10-17 12:02 被阅读0次

    当使用ggplot2作图的时候有限制坐标轴的范围的需求时可以使用的设置函数有3个:
    xlim( ) or ylim( )
    scale_x_continuous(limits = c( )) or scale_y_continuous(limits = c( ))
    coord_cartesian(ylim = c( ), xlim = c( ))
    从本质上来说这三个函数都可对坐标轴的范围进行设置,但是不同的是前面两函数当有点超出指定的范围时,这些超出的点会被删除,具体演示如下:
    library(ggplot2)

    模拟数据

    a <- c(1,2,3,4,5,6,7,8,9)
    b <- c(1,2,3,2,4,6,6,5,3)

    原始的图形

    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity")


    使用ylim()设置y轴范围时,当没有点超出设置范围则一切正常

    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + ylim(0,7)


    使用ylim()设置y轴范围时,当有点超出设置范围则超出的点会被remove

    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + ylim(0,5)



    使用scale__continuous函数设置范围和lim()一样会发生remove的情况

    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + scale_y_continuous(limits = c(0,5))



    而使用coord_cartesian(*lim = c( ))函数对坐标轴起始位置进行设置则不会出现remove的情况,图形会把超出的部分截掉,只保留能在设置的坐标范围显示的部分

    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + coord_cartesian(ylim = c(0,5))



    其中还有一个需要注意的点就是前面两个起始位置都必须是0,否则则不会显示图形,但是最后coord_cartesian(*lim = c( ))函数则会显示从设置的起始位置开始的图形:

    当起始位都置设置为1时,coord_cartesian(*lim = c( ))函数的表现则最佳

    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + ylim(1,7)
    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + scale_y_continuous(limits = c(1,7))
    ggplot() +
    geom_bar(mapping = aes(x=a, y=b), stat = "identity") + coord_cartesian(ylim = c(1,7))





    总的来说,似乎coord_cartesian(*lim = c( ))函数对于坐标轴范围的设置似乎更加强大,也推荐使用.

    相关文章

      网友评论

        本文标题:ggplot2作图设置坐标轴的起始位置

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