• R语言
  • 请问如何用ggplot画出曲线簇?

5 天 后

Cloud2016 最近没有时间做这个事情,虽然我很想看到古代图形统计早日重见天日。我对用 github 工作很不熟悉,所以在开始搬砖前需要从一些比较基本的东西学起,但是最近没有精力去折腾 github。

你可以发个帖子召唤点忍者来帮忙。如果我对要做的事情上手些了,也会来搭把手。

    Cloud2016 好的,我加入。谢谢邀请!

    有三个问题或建议:

    1. 这个项目的目标,是不是只需把书稿从 lyx 格式迁移到 bookdown 格式,一字不改,而后续的修订全是 @yihui 的工作?
    2. 我觉得事先分一下工比较好,免得两个人或几个人不约而同做了同一件事,一磨叽,冲突了。
    3. lyx 我几乎没用过,如果有任何迁移的经验,哪怕是最基础的,希望分享一下,避免时间上不必要的浪费。

    Liechi 我觉得不必对 git 望而生畏,也没必要事先专门系统学习。边用边学效果好,以赛代练效率高。你可以拿 TNT 擂台赛练手,打碎不用你赔。

      yihui 你想怎么折腾就怎么折腾吧。我感觉这会是严酷的体力活儿。

      dapengde 根据谢大的指示,我觉得我们有相当大的自主权,

      1. 首先尽量搬迁,如果有难以重现的可以暂不搬迁,在相关地方注明即可,我希望能在 R Markdown 中运行的就在里面运行,比如生成图形和模型计算,如果有耗时长的操作,可以不运行,贴结果
      2. 要不我来序言、第1、3、5、7章,附录 A、C,你来2、4、6章,附录 B、D,如果有人加入,再从你我的章节中各分一些给他
      3. 首先下载安装 LyX 我选了就近的站点 <https://mirrors.tuna.tsinghua.edu.cn/lyx/bin/2.3.3/> 下载,然后用它打开 Modern-Stat-Graphics.lyx 或者依据 Modern-Stat-Graphics.tex 文件复制文字(我没找到更方便的转化方式),把文字复制出来后,再在相应的地方以 R Markdown 的方式把 R 代码块和图片插入
      4. 我已经加你为项目合作者,你要接受一下,然后可以直接推动修改到仓库了
      5. 由代码自动生成的图片,暂不调长宽比等格式,首先尽量把内容复现就好
      6. 参考文献和章节的引用可以暂时不搞,先解决图、表的交叉引用

        dapengde
        以赛代练是好主意,只是开始的阻力较大,我对 git 的了解,仅限于用它推过文章;用它做别的事情,感觉无从着手。你知道有什么材料适于新手学习吗?

          Liechi dapengde fork commit push merge 会这些基本就够了。如果再遇到什么其它的操作可以参考这个查询手册 <https://github.com/521xueweihan/git-tips> 然后就是放狗搜,最后就是拿出来问,比如我以前问的 <https://d.cosx.org/d/420426>

          Liechi 如果真的那么惧怕 Git 不妨先 fork 这个项目,然后在自己 fork 的项目里修改, RStudio 里提交 commit,推送到 Github 后,手动提交 PR。大多数情况下,我也是在 RStudio 里弄

            Cloud2016

            好的。可以在 readme 里列个任务分配表,把正在做的标识出来,剩下的任人认领。这个表我可以做。

            你的邀请邮件我收到了,然而点了之后进去的不是 /invitations 页面,所以没法接受邀请。

              dapengde 看来这个是我单方面决定的,从设置里可以看到,你已经在合作者列表里了

              好啊,你来加任务分配表

                Cloud2016

                然后用它打开 Modern-Stat-Graphics.lyx 或者依据 Modern-Stat-Graphics.tex 文件复制文字(我没找到更方便的转化方式),把文字复制出来后,再在相应的地方以 R Markdown 的方式把 R 代码块和图片插入。

                我用了一个稍微省事的办法:先用 pandoc 把 tex 文件转成 markdown,再把后者拷贝粘贴进 .Rmd文件。

                pandoc 转换全书的话出错。我就只转了第 2 章,尚可。只是代码部分全丢失了,需要从 lyx 文件里手动拷贝粘贴。不过这样也有好处,就是顺便把 sweave 的图片选项也拷进了 .Rmd 的 chunk 选项里,最大程度保持跟原稿的一致。

                  Cloud2016 关于图、表、章节的交叉引用,我们可否做如下约定?即

                  1. 沿用原稿的图表标签 (label) 不变,除非原稿有错误。
                  2. 在章节标题后面添加标签,与原稿标签一致。

                  这样的好处是,跨章节的交叉引用只需大体过一遍就基本不用改了——虽然后面的章节还没搬过来,暂时会显示为问号。

                    dapengde 我就是这么干的,除非图、表的引用有问题,比如我看到图的 chunck option 里有这样的标签heart_curve 我就把它改为 heart-curve

                    至于文中还没有说明需要哪些 R 包,我们暂不添加类似安装 R 包的代码

                    if(!require('MSG')) install.packages('MSG') # 安装本书配套的MSG包

                    一方面是我打包镜像的时候几乎把所有需要的 R 包都打包了,如果本地缺的话,就自己安装下。

                    另一方面是我觉得 @yihui 有必要在合适的地方添加一小节说明本书用了哪些 R 包,至少提供 xfun::session_info(pkgs),这是他的一贯做法,我也比较喜欢这种方式。或者告诉读者怎么获取和使用我打包的镜像文件,以及如何在容器中编译书籍,这个过程其实我公开了,目前,我让 Travis 就是这么干的。基本上不用操心依赖问题,我来操心就好了!

                    Cloud2016 我对通过 github 合作这样的工作模式有点认知障碍,不是怕具体的 git 命令。谢谢你跟大鹏的建议,我先从 TNT 上手吧。

                    dapengde 我原想先不考虑图的尺寸问题,这个想放在最后排版的时候考虑,届时设置全局选项对网页版和 PDF 版里的图片尺寸进行不同的控制,以期达到最佳的显示效果,不过既然你可以比较轻松地将原来的图片设置搬迁过来,不妨先设置着也好

                      Cloud2016 好,就按你说的办。

                      此外,关于体例,原稿里说:

                      正文中的代码以等宽正体表示,如“inline R code ”,函数名称以斜体表示,如“function() ”,对象类名称和参数名称用无衬线字体表示,如“class using sans serif ”,R 程序包用粗体表示,如“package ”...

                      我看到你在“导读”里将函数名以行间代码的等宽字体来表示,而我在第 2 章是按原稿的斜体处理的。这一点还是事先统一一下为好,免得返工。

                      还有,“对象类名称和参数名称用无衬线字体表示”,这个我还没弄懂如何在 bookdown 里实现。

                      关于书稿里要不要安装包的代码,我的考虑是用户下载这个项目后可以直接本地编译成书,一气呵成。如果另辟章节说明,对于初级用户可能是个障碍。我觉得折中的方法是让这段代码以 echo=FALSE 的形式偷偷藏在书稿里。

                      楼歪太多了,真不知道要不要另开一帖。

                        dapengde 另辟一个小节就是在开始告诉他们运行环境或者重现本书介绍的内容需要的软件工具,或者干脆隐藏这么一段

                        # 这只是 R 包
                        lapply(c('pkg1',"pkg2"), function(pkg) {
                          if (system.file(package = pkg) == '') install.packages(pkg)
                        })

                        你说函数名是按斜体还是代码的等宽体,我当时是图方便,还有也把它看成代码了,直接反引号包裹貌似更常见。 R 包加粗,我还没有加

                          Cloud2016 斜体还是等宽,我觉得无所谓,只要统一就行啊。我是用 pandoc 从 .tex 转成 .md 的,所以保留了原稿里函数名用的斜体格式,以及 R 包名加粗格式。@yihui 当初将函数名跟代码以两种格式表示,有什么特别的考虑吗?

                          还有,在原稿的 .tex 文件里,那个无衬线字体是用[data frame]{.sans-serif}这样的格式来实现的。我们在 bookdown 里该如何处理?

                            dapengde 斜体还是等宽,我觉得无所谓,只要统一就行啊。

                            完全赞同。