代码之家  ›  专栏  ›  技术社区  ›  fmark

R中绘图包之间的关系

  •  15
  • fmark  · 技术社区  · 14 年前

    我刚从R开始,开始制作图表。我知道至少有三个不同的绘图包,标准包、ggplot2和lattice。

    这些包装是互补的,还是覆盖了许多相同的地方?如果它们是互补的,我什么时候使用它们?如果它们覆盖同一个地面,作为一个新的R用户,我应该把我的精力投入到掌握中去?

    2 回复  |  直到 13 年前
        1
  •  24
  •   John    13 年前

    共有4个绘图系统。有标准、网格、晶格和ggplot2。后两个系统是建立在前两个系统之上的高级系统。各有利弊。

    标准图形可以让您对绘图进行绝对控制,并且非常适合按照您喜欢的方式制作一个绘图。Lattice的开发是为了解决您需要绘制数组的情况。它非常灵活,可以在数据和任何变量上绘制大多数函数。如果你想要一个任意的函数应用到每一个对象的数据上,并以一个图的网格呈现,格子就是你的孩子。它建立在网格上,几乎是任何人使用网格包的唯一方式。

    最新的一个是ggplot2,它既是一个绘图包,也是一个新的绘图哲学。它是基于威尔金森的“图形语法”,并试图做到这一点,生成图形语法。你只需要学习更高级的术语语法,比如gem(你绘制的东西),stat(数据统计),facet(单独的面板),你就可以构建非常复杂的图表。它们一般都很可爱,尤其是在电子发行方面。不幸的是,无法精确控制每个细节。有些事情你根本无法调整。也就是说,许多人已经得出了理智的结论,即用简单的方法来描述高质量的地块,代价很小。

    看看ggplot2的一些默认图和示例图。如果他们对你有吸引力,那么我建议你从那里开始。如果可以的话,试着通过基本语法方法学习做每件事。我个人认为哈德利把便利功能作为网站的主要帮助是错误的。它似乎破坏了ggplot2的整个目的。一个缩写的语法被作为帮助的主要界面,但是这本书是关于哲学和基本语法的。

    (我是这么说的,但我大部分的绘图都是在基础图形中进行的,因为我发现构建图形的每个组件都很有趣。)

        2
  •  7
  •   Joris Meys    14 年前

    这三个包实际上是三个不同的绘图概念。如果你知道自己在做什么,并且在我看来,所有的命令都处理图形中的特定元素(绘图、标题、轴、标签、图例等),那么标准的绘图设备就会运行得很快。这些图在布局上相当灵活,我发现它们对大多数标准统计绘图和相当直接的二维图都很有用。

    莱迪思是一个基于网格的绘图设备,允许更多的灵活性。您基本上可以绘制您想要的任何内容,如 R Graph Gallery . 图表也可以注释。在我看来,格子对可定制的高端图形非常有用。我主要是在制作彩色地图、三维可视化和不同数据子集的组合图时使用它(例如,在模型构建中,用于不同术语的效果)。另请参见 Using lattice graphics in R .

    ggplot2实际上是将这两个系统的优点结合在一起的一种尝试:您保留了晶格的大部分灵活性,但是您像处理标准绘图一样处理容易定义的图形对象。一般来说,图形输出比标准包中的标准设置更美观,并且比晶格的麻烦更小。就我个人而言,我对ggplot2的经验很少,但它看起来绝对有希望。我仍然更喜欢基本的图形包,但这可能与我已经习惯了这个包的事实有更多的关系。老猴子和新把戏还有所有这些…

    基本上,我想说的是去做你觉得最舒服的事情。我肯定至少会学习标准软件包的基础知识,但从那里我猜ggplot2提供了你所需要的一切,如果你不想进入高知名度的图形。如果你真的想制作定制的复杂图形,了解格子只能帮助你。但是,另外两个提供了您所需要的一切,并且在使用中相当直接。