查看: 5645|回复: 40

[软件使用] 用ggplot2画图教程(美图版)

  [复制链接]
  • TA的每日心情

    2017.11.10 13:58
  • 签到天数: 353 天

    连续签到: 2 天

    [LV.8]以坛为家I

    管理员

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    主题
    422
    奥币
    7490
    积分
    6612
    注册时间
    2015.11.23
    在线时间
    952 小时

    宣传达人优秀版主


    发表于 2015.12.29 17:40:10 | 显示全部楼层 |阅读模式
    转载好文章

    1、Why use ggplot2
    ggplot2是我见过最human friendly的画图软件,这得益于Leland Wilkinson在他的著作《The Grammar of Graphics》中提出了一套图形语法,把图形元素抽象成可以自由组合的成分,Hadley Wickham把这套想法在R中实现。
    为什么要学习ggplot2,可以参考ggplot2: 数据分析与图形艺术序言(btw: 在序言的最后,我被致谢了)。
    Hadley Wickham也给出一堆理由让我们说服自己,我想再补充一点,Hadley Wickham是学医出身的,做为学生物出身的人有什么理由不支持呢

    ggplot2基本要素:
    数据(Data)和映射(Mapping)
    几何对象(Geometric)
    标尺(Scale)
    统计变换(Statistics)
    坐标系统(Coordinante)
    图层(Layer)
    分面(Facet)
    主题(Theme)
    这里将从这些基本要素对ggplot2进行介绍。

    2、数据(Data)和映射(Mapping)
    下面以一份钻石的数据为例,这份数据非常大,随机取一个子集来画图。

    require(ggplot2)
    data(diamonds)
    set.seed(42)
    small <- diamonds[sample(nrow(diamonds), 1000), ]
    head(small)

    ##       carat       cut color clarity depth table price    x    y    z
    ## 49345  0.71 Very Good     H     SI1  62.5    60  2096 5.68 5.75 3.57
    ## 50545  0.79   Premium     H     SI1  61.8    59  2275 5.97 5.91 3.67
    ## 15434  1.03     Ideal     F     SI1  62.4    57  6178 6.48 6.44 4.03
    ## 44792  0.50     Ideal     E     VS2  62.2    54  1624 5.08 5.11 3.17
    ## 34614  0.27     Ideal     E     VS1  61.6    56   470 4.14 4.17 2.56
    ## 27998  0.30   Premium     E     VS2  61.7    58   658 4.32 4.34 2.67

    summary(small)

    ##      carat              cut      color      clarity        depth   
    ##  Min.   :0.220   Fair     : 28   D:121   SI1    :258   Min.   :55.2
    ##  1st Qu.:0.400   Good     : 88   E:186   VS2    :231   1st Qu.:61.0
    ##  Median :0.710   Very Good:227   F:164   SI2    :175   Median :61.8
    ##  Mean   :0.819   Premium  :257   G:216   VS1    :141   Mean   :61.7
    ##  3rd Qu.:1.070   Ideal    :400   H:154   VVS2   : 91   3rd Qu.:62.5
    ##  Max.   :2.660                   I:106   VVS1   : 67   Max.   :72.2
    ##                                  J: 53   (Other): 37               
    ##      table          price             x              y      
    ##  Min.   :50.1   Min.   :  342   Min.   :3.85   Min.   :3.84
    ##  1st Qu.:56.0   1st Qu.:  990   1st Qu.:4.74   1st Qu.:4.76
    ##  Median :57.0   Median : 2595   Median :5.75   Median :5.78
    ##  Mean   :57.4   Mean   : 4111   Mean   :5.79   Mean   :5.79
    ##  3rd Qu.:59.0   3rd Qu.: 5495   3rd Qu.:6.60   3rd Qu.:6.61
    ##  Max.   :65.0   Max.   :18795   Max.   :8.83   Max.   :8.87
    ##                                                            
    ##        z      
    ##  Min.   :2.33
    ##  1st Qu.:2.92
    ##  Median :3.55
    ##  Mean   :3.57
    ##  3rd Qu.:4.07
    ##  Max.   :5.58
    ##

    画图实际上是把数据中的变量映射到图形属性上。以克拉(carat)数为X轴变量,价格(price)为Y轴变量。
    p <- ggplot(data = small, mapping = aes(x = carat, y = price))
    上面这行代码把数据映射XY坐标轴上,需要告诉ggplot2,这些数据要映射成什么样的几何对象,下面以散点为例:
    p + geom_point()

    几何对象将在下面的小节介绍,这一节,关注的是数据和图形属性之间的映射。

    如果想将切工(cut)映射到形状属性。只需要:
    p <- ggplot(data=small, mapping=aes(x=carat, y=price, shape=cut))
    p+geom_point()

    再比如我想将钻石的颜色(color)映射颜色属性:
    p <- ggplot(data=small, mapping=aes(x=carat, y=price, shape=cut, colour=color))
    p+geom_point()


    3、几何对象(Geometric)
    在上面的例子中,各种属性映射由ggplot函数执行,只需要加一个图层,使用geom_point()告诉ggplot要画散点,于是所有的属性都映射到散点上。
    geom_point()完成的就是几何对象的映射,ggplot2提供了各种几何对象映射,如geom_histogram用于直方图,geom_bar用于画柱状图,geom_boxplot用于画箱式图等等。
    不同的几何对象,要求的属性会有些不同,这些属性也可以在几何对象映射时提供,比如上一图,也可以用以下语法来画:
    p <- ggplot(small)
    p+geom_point(aes(x=carat, y=price, shape=cut, colour=color))

    ggplot2支持图层,我通常把不同的图层中共用的映射提供给ggplot函数,而某一几何对象才需要的映射参数提供给geom_xxx函数。

    这一小节我们来看一下各种常用的几何对象。

    直方图
    直方图最容易,提供一个x变量,画出数据的分布。
    ggplot(small)+geom_histogram(aes(x=price))


    同样可以根据另外的变量给它填充颜色,比如按不同的切工:
    ggplot(small)+geom_histogram(aes(x=price, fill=cut))

    也可以将其分开,side-by-side地画直方图。
    ggplot(small)+geom_histogram(aes(x=price, fill=cut), position="dodge")
    还可以使用position="fill",按照相对比例来画。
    ggplot(small)+geom_histogram(aes(x=price, fill=cut), position="fill")



    柱状图
    柱状图非常适合于画分类变量。在这里以透明度(clarity)变量为例。按照不同透明度的钻石的数目画柱状图。
    ggplot(small)+geom_bar(aes(x=clarity))


    柱状图两个要素,一个是分类变量,一个是数目,也就是柱子的高度。数目在这里不用提供,因为ggplot2会通过x变量计算各个分类的数目。

    当然你想提供也是可以的,通过stat参数,可以让geom_bar按指定高度画图,比如以下代码:
    ggplot()+geom_bar(aes(x=c(LETTERS[1:3]),y=1:3), stat="identity")


    柱状图和直方图是很像的,直方图把连续型的数据按照一个个等长的分区(bin)来切分,然后计数,画柱状图。而柱状图是分类数据,按类别计数。我们可以用前面直方图的参数来画side-by-side的柱状图,填充颜色或者按比例画图,它们是高度一致的。

    柱状图是用来表示计数数据的,但在生物界却被经常拿来表示均值,加上误差来表示数据分布,这可以通常图层来实现,我将在图层一节中给出实例。

    密度函数图
    说到直方图,就不得不说密度函数图,数据和映射和直方图是一样的,唯一不同的是几何对象,geom_histogram告诉ggplot要画直方图,而geom_density则说我们要画密度函数图,在我们熟悉前面语法的情况下,很容易画出:
    ggplot(small)+geom_density(aes(x=price, colour=cut))


    ggplot(small)+geom_density(aes(x=price,fill=clarity))

    colour参数指定的是曲线的颜色,而fill是往曲线下面填充颜色。

    箱式图
    数据量比较大的时候,用直方图和密度函数图是表示数据分布的好方法,而在数据量较少的时候,比如很多的生物实验,很多时候大家都是使用柱状图+errorbar的形式来表示,不过这种方法的信息量非常低,被Nature Methods吐槽,这种情况推荐使用boxplot。
    ggplot(small)+geom_boxplot(aes(x=cut, y=price,fill=color))
    geom_boxplot将数据映射到箱式图上,上面的代码,我们应该很熟悉了,按切工(cut)分类,对价格(price)变量画箱式图,再分开按照color变量填充颜色。



    geom_abline         geom_area         
    geom_bar                 geom_bin2d
    geom_blank                 geom_boxplot         
    geom_contour         geom_crossbar
    geom_density         geom_density2d         
    geom_dotplot         geom_errorbar
    geom_errorbarh         geom_freqpoly         
    geom_hex                 geom_histogram
    geom_hline                 geom_jitter         
    geom_line                 geom_linerange
    geom_map                 geom_path         
    geom_point                 geom_pointrange
    geom_polygon         geom_quantile         
    geom_raster         geom_rect
    geom_ribbon         geom_rug         
    geom_segment         geom_smooth
    geom_step                 geom_text         
    geom_tile                 geom_violin
    geom_vline


    楼主我已经眼花了,文章才转了一半,真的是好长好长好长好长好长好长的文章,容我歇歇再继续补充{:8_413:}





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    评分

    参与人数 1奥币 +20 贡献 +10 收起 理由
    基迪奥-周煌凯 + 20 + 10 好贴必须分享!!

    查看全部评分

    有问题请发贴提问
    回复

    使用道具 举报

  • TA的每日心情

    2017.11.10 13:58
  • 签到天数: 353 天

    连续签到: 2 天

    [LV.8]以坛为家I

    管理员

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    主题
    422
    奥币
    7490
    积分
    6612
    注册时间
    2015.11.23
    在线时间
    952 小时

    宣传达人优秀版主


     楼主| 发表于 2015.12.29 17:45:22 | 显示全部楼层
    4、标尺(Scale)
    前面我们已经看到了,画图就是在做映射,不管是映射到不同的几何对象上,还是映射各种图形属性。这一小节介绍标尺,在对图形属性进行映射之后,使用标尺可以控制这些属性的显示方式,比如坐标刻度,可能通过标尺,将坐标进行对数变换;比如颜色属性,也可以通过标尺,进行改变。
    ggplot(small)+geom_point(aes(x=carat, y=price, shape=cut, colour=color))+scale_y_log10()+scale_colour_manual(values=rainbow(7))

    以数据(Data)和映射(Mapping)一节中所画散点图为例,将Y轴坐标进行log10变换,再自己定义颜色为彩虹色。

    5、统计变换(Statistics)
    统计变换对原始数据进行某种计算,然后在图上表示出来,例如对散点图上加一条回归线。
    ggplot(small, aes(x=carat, y=price))+geom_point()+scale_y_log10()+stat_smooth()
    图13
    这里就不按颜色、切工来分了,不然ggplot会按不同的分类变量分别做回归,图就很乱,如果我们需要这样做,我们可以使用分面,这个将在后面介绍。
    这里,aes所提供的参数,就通过ggplot提供,而不是提供给geom_point,因为ggplot里的参数,相当于全局变量,geom_point()和stat_smooth()都知道x,y的映射,如果只提供给geom_point(),则相当于是局部变量,geom_point知道这种映射,而stat_smooth不知道,当然你再给stat_smooth也提供x,y的映射,不过共用的映射,还是提供给ggplot好。
    ggplot2提供了多种统计变换方式:
    stat_abline       stat_contour      stat_identity     stat_summary
    stat_bin          stat_density      stat_qq           stat_summary2d
    stat_bin2d        stat_density2d    stat_quantile     stat_summary_hex
    stat_bindot       stat_ecdf         stat_smooth       stat_unique
    stat_binhex       stat_function     stat_spoke        stat_vline
    stat_boxplot      stat_hline        stat_sum          stat_ydensity
    统计变换是非常重要的功能,我们可以自己写函数,基于原始数据做某种计算,并在图上表现出来,也可以通过它改变geom_xxx函数画图的默认统计参数。
    比如我在Proteomic investigation of the interactome of FMNL1 in hematopoietic cells unveils a role in calcium-dependent membrane plasticity的图一中,就把boxplot的中位线替换成了平均值来作图。


    6、坐标系统(Coordinante)
    坐标系统控制坐标轴,可以进行变换,例如XY轴翻转,笛卡尔坐标和极坐标转换,以满足我们的各种需求。

    坐标轴翻转由coord_flip()实现
    ggplot(small)+geom_bar(aes(x=cut, fill=cut))+coord_flip()

    而转换成极坐标可以由coord_polar()实现:
    ggplot(small)+geom_bar(aes(x=factor(1), fill=cut))+coord_polar(theta="y")

    这也是为什么之前介绍常用图形画法时没有提及饼图的原因,饼图实际上就是柱状图,只不过是使用极坐标而已,柱状图的高度,对应于饼图的弧度,饼图并不推荐,因为人类的眼睛比较弧度的能力比不上比较高度(柱状图)

    还可以画靶心图:
    ggplot(small)+geom_bar(aes(x=factor(1), fill=cut))+coord_polar()

    以及风玫瑰图(windrose)
    ggplot(small)+geom_bar(aes(x=clarity, fill=cut))+coord_polar()



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    有问题请发贴提问
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017.11.10 13:58
  • 签到天数: 353 天

    连续签到: 2 天

    [LV.8]以坛为家I

    管理员

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    主题
    422
    奥币
    7490
    积分
    6612
    注册时间
    2015.11.23
    在线时间
    952 小时

    宣传达人优秀版主


     楼主| 发表于 2015.12.29 17:48:30 | 显示全部楼层
    7、图层(Layer)
    photoshop流行的原因在于PS 3.0时引入图层的概念,ggplot的牛B之处在于使用+号来叠加图层,这堪称是泛型编程的典范。
    在前面散点图上,我们已经见识过,加上了一个回归线拟合的图层。
    有了图层的概念,使用ggplot画起图来,就更加得心应手。
    做为图层的一个很好的例子是蝙蝠侠logo,batman logo由6个函数组成,在下面的例子中,我先画第一个函数,之后再加一个图层画第二个函数,不断重复这一过程,直到六个函数全部画好。
    require(ggplot2)
    f1data.frame(x=x,y=y)
            d -3*sqrt(33)/7,]
            return(d)
    }
    x1data.frame(x2=x2, y2=y2)
    p2data.frame(x3=x3, y3=y3)
    p3data.frame(x4=x4,y4=y4)
    p4data.frame(x5=x5,y5=y5)
    p5data.frame(x6=x6,y6=y6)
    p6

    下面再以生物界中常用的柱状图+误差图为实例,展示ggplot2非常灵活的图层。以我2011年发表的文章Phosphoproteome profile of human lung cancer cell line A549中的westernblot数据为例。
    Normaldata.frame(V=c("Normal", "Cancer"), mean=m, sd=s)
    d$V

    8、分面(Facet)
    分面可以让我们按照某种给定的条件,对数据进行分组,然后分别画图。
    在统计变换一节中,提到如果按切工分组作回归线,显然图会很乱,有了分面功能,我们可以分别作图。
    ggplot(small, aes(x=carat, y=price))+geom_point(aes(colour=cut))+scale_y_log10() +facet_wrap(~cut)+stat_smooth()

    9、主题(Theme)
    通过ggplot画图之后,我们可能还需要对图进行定制,像title, xlab, ylab这些高频需要用到的,自不用说,ggplot2提供了ggtitle(), xlab()和ylab()来实现。
    比如:
    p

    但是这个远远满足不了需求,我们需要改变字体,字体大小,坐标轴,背景等各种元素,这需要通过theme()函数来完成。
    ggplot2提供一些已经写好的主题,比如theme_grey()为默认主题,我经常用的theme_bw()为白色背景的主题,还有theme_classic()主题,和R的基础画图函数较像。

    别外ggthemes包提供了一些主题可供使用,包括:
    theme_economist theme_economist_white
    theme_wsj                  theme_excel
    theme_few                  theme_foundation
    theme_igray         theme_solarized
    theme_stata         theme_tufte

    require(ggthemes)
    p + theme_wsj()

    在2013年发表的文章Putative cobalt- and nickel-binding proteins and motifs in Streptococcus pneumoniae中的图3就是使用theme_stata来画的。
    至于如何改变这些元素,我觉得我之前画囧字的博文可以做为例子:
    fdata.frame(x=x,y=y)
    p

    详细的说明,可以参考?theme的帮助文档。

    10、二维密度图
    在这个文档里,为了作图方便,我们使用diamonds数据集的一个子集,如果使用全集,数据量太大,画出来散点就糊了,这种情况可以使用二维密度力来呈现。
    ggplot(diamonds, aes(carat, price))+ stat_density2d(aes(fill = ..level..), geom="polygon")+ scale_fill_continuous
    (high='darkred',low='darkgreen')

    11、ggplot2实战
    果壳知性里有帖子介绍了个猥琐邪恶的曲线,引来无数宅男用各种工具来画图,甚至于3D动态图都出来了。这里用ggplot2来画。3D版本请猛击此处
    fdata.frame(x=c(x1,x2,x3), y=rep(y,3), type=rep(LETTERS[1:3], each=length(y)))
    p
    再来一个蝴蝶图,详见《Modern Applied Statistics with S-PLUS》第一章。
    theta data.frame(x=radius*sin(theta), y=radius*cos(theta))
    ggplot(dd, aes(x, y))+geom_path()+theme_null()+xlab("")+ylab("")



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    有问题请发贴提问
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    忙~
    2018.12.15 10:01
  • 签到天数: 98 天

    连续签到: 1 天

    [LV.6]常住居民II

    钵水母

    Rank: 3Rank: 3

    主题
    7
    奥币
    1024
    积分
    169
    注册时间
    2015.12.29
    在线时间
    53 小时

    发表于 2015.12.30 10:28:02 | 显示全部楼层
    确实很实用啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016.5.20 11:23
  • 签到天数: 21 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    版主

    Rank: 10Rank: 10Rank: 10

    主题
    5
    奥币
    1705
    积分
    372
    注册时间
    2015.12.21
    在线时间
    61 小时

    突出贡献论坛元老


    发表于 2015.12.30 13:44:08 | 显示全部楼层
    最好加个转载,以免引起其他误会

    点评

    已注明转载  发表于 2016.2.24 16:36
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017.4.30 10:09
  • 签到天数: 188 天

    连续签到: 1 天

    [LV.7]常住居民III

    中华鲟

    Rank: 5Rank: 5

    主题
    7
    奥币
    1381
    积分
    623
    注册时间
    2016.1.21
    在线时间
    94 小时

    发表于 2016.3.31 09:22:08 | 显示全部楼层
    太牛了,如此图文并茂的用简短语言讲出来也是没sei了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    忙~
    2019.1.23 23:11
  • 签到天数: 104 天

    连续签到: 1 天

    [LV.6]常住居民II

    管理员

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    主题
    45
    奥币
    5323
    积分
    4908
    注册时间
    2015.12.5
    在线时间
    500 小时

    活跃会员论坛元老


    发表于 2016.3.31 10:08:27 | 显示全部楼层
    论坛第一好贴,没什么可说的了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017.1.2 12:39
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]常住居民I

    钵水母

    Rank: 3Rank: 3

    主题
    0
    奥币
    489
    积分
    60
    注册时间
    2016.3.21
    在线时间
    10 小时

    发表于 2016.4.4 22:26:59 | 显示全部楼层
    静不下心学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016.4.8 08:32
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

    钵水母

    Rank: 3Rank: 3

    主题
    1
    奥币
    374
    积分
    116
    注册时间
    2016.4.7
    在线时间
    2 小时

    发表于 2016.4.8 08:36:19 | 显示全部楼层
    小圆  小瑶...

    点评

    哎~  发表于 2016.9.26 11:36
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016.9.18 14:50
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    钵水母

    Rank: 3Rank: 3

    主题
    0
    奥币
    439
    积分
    145
    注册时间
    2016.4.7
    在线时间
    9 小时

    发表于 2016.4.8 21:08:03 | 显示全部楼层
    very good!
    回复

    使用道具 举报

  • TA的每日心情

    2017.8.15 10:27
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    帝王蝶

    Rank: 4

    主题
    7
    奥币
    537
    积分
    309
    注册时间
    2016.4.8
    在线时间
    29 小时

    发表于 2016.4.9 14:49:44 | 显示全部楼层
    确实是好东西,但是完全掌握,熟练运用,确实还不够傻瓜式,真正用的时候,很多细节想再做,好难,可编辑性和个性化,很难用的熟。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    吃饭
    昨天 22:27
  • 签到天数: 1097 天

    连续签到: 1 天

    [LV.10]以坛为家III

    功夫熊猫

    Rank: 10Rank: 10Rank: 10

    主题
    1
    奥币
    18213
    积分
    3513
    注册时间
    2016.4.25
    在线时间
    781 小时

    灌水之王


    发表于 2016.5.9 08:08:00 来自手机 | 显示全部楼层
    这么好的资料,赞
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    吃饭
    昨天 22:27
  • 签到天数: 1076 天

    连续签到: 1 天

    [LV.10]以坛为家III

    迅猛龙

    Rank: 8Rank: 8

    主题
    0
    奥币
    12797
    积分
    1065
    注册时间
    2016.5.6
    在线时间
    284 小时

    发表于 2016.5.21 08:06:21 来自手机 | 显示全部楼层
    图片很好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016.11.3 14:12
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    帝王蝶

    Rank: 4

    主题
    20
    奥币
    500
    积分
    422
    注册时间
    2016.3.2
    在线时间
    58 小时

    发表于 2016.5.23 12:33:58 | 显示全部楼层
    学习学习
    回复

    使用道具 举报

  • TA的每日心情
    忙~
    昨天 11:51
  • 签到天数: 240 天

    连续签到: 1 天

    [LV.8]以坛为家I

    中华鲟

    Rank: 5Rank: 5

    主题
    15
    奥币
    1813
    积分
    928
    注册时间
    2016.4.26
    在线时间
    206 小时

    发表于 2016.5.23 14:28:53 | 显示全部楼层
    一级棒!~
    回复

    使用道具 举报

  • TA的每日心情
    吃饭
    昨天 22:27
  • 签到天数: 1097 天

    连续签到: 1 天

    [LV.10]以坛为家III

    功夫熊猫

    Rank: 10Rank: 10Rank: 10

    主题
    1
    奥币
    18213
    积分
    3513
    注册时间
    2016.4.25
    在线时间
    781 小时

    灌水之王


    发表于 2016.5.24 23:17:35 | 显示全部楼层
    好好学习。
    回复

    使用道具 举报

  • TA的每日心情
    吃饭
    昨天 10:36
  • 签到天数: 748 天

    连续签到: 1 天

    [LV.9]以坛为家II

    帝王蝶

    Rank: 4

    主题
    1
    奥币
    1835
    积分
    483
    注册时间
    2016.5.20
    在线时间
    150 小时

    发表于 2016.6.12 15:35:33 | 显示全部楼层
    这个好厉害
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    吃饭
    昨天 22:27
  • 签到天数: 1076 天

    连续签到: 1 天

    [LV.10]以坛为家III

    迅猛龙

    Rank: 8Rank: 8

    主题
    0
    奥币
    12797
    积分
    1065
    注册时间
    2016.5.6
    在线时间
    284 小时

    发表于 2016.6.17 12:49:26 来自手机 | 显示全部楼层
    收集保存
    回复

    使用道具 举报

  • TA的每日心情
    yes!
    2019.4.22 15:27
  • 签到天数: 238 天

    连续签到: 1 天

    [LV.7]常住居民III

    帝王蝶

    Rank: 4

    主题
    0
    奥币
    1134
    积分
    225
    注册时间
    2016.9.23
    在线时间
    109 小时

    发表于 2016.9.25 14:58:25 | 显示全部楼层
    感谢楼主分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    吃饭
    2018.9.7 08:31
  • 签到天数: 409 天

    连续签到: 4 天

    [LV.9]以坛为家II

    帝王蝶

    Rank: 4

    主题
    0
    奥币
    3138
    积分
    296
    注册时间
    2016.8.25
    在线时间
    82 小时

    发表于 2016.10.17 08:38:34 | 显示全部楼层

    感谢楼主分享
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表