R中绘图包之间的关系

R中绘图包之间的关系,r,visualization,plot,ggplot2,lattice,R,Visualization,Plot,Ggplot2,Lattice,我刚从R开始,开始制作图表。我知道至少有三种不同的绘图软件包,标准的、ggplot2和lattice 这些一揽子计划是互补的,还是涵盖了几乎相同的领域?如果它们是互补的,我什么时候使用它们?如果它们涵盖相同的领域,作为一个新的R用户,我应该把精力放在掌握哪些方面?这三个软件包实际上是三个不同的绘图概念。如果你知道自己在做什么,标准绘图设备就会运行得很快。在我看来,它相当直观,因为所有命令都处理图形的特定元素(绘图、标题、轴、标签、图例等)。这些图形在布局上非常灵活,我发现它们对于大多数标准统计绘

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


这些一揽子计划是互补的,还是涵盖了几乎相同的领域?如果它们是互补的,我什么时候使用它们?如果它们涵盖相同的领域,作为一个新的R用户,我应该把精力放在掌握哪些方面?

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

Lattice是一种基于网格的绘图设备,具有更大的灵活性。您基本上可以绘制任何您想要的内容,如图所示。图形也可以进行注释。在我看来,Lattice对于可定制的高端图形非常有用。我主要在制作彩色地图、3D可视化以及不同数据子集的组合图时使用它(例如,在建模中,用于不同术语的效果)。另见

ggplot2实际上是将两种系统的优点结合起来的一种尝试:保留了lattice的大部分灵活性,但可以像处理标准打印一样处理易于定义的图形对象。图形输出通常比标准包中的标准设置更美观,并且比使用lattice时麻烦更少。就我个人而言,我对ggplot2的经验很少,但它看起来确实很有前途。我仍然更喜欢BaseGraph软件包,但这可能更多地是因为我已经习惯了它。老猴子和新把戏等等


基本上,我会说去做你觉得最舒服的事情。我肯定会至少学习标准软件包的基础知识,但从那里我想ggplot2为您提供了所有您需要的东西,如果您不想进入高调图形。如果您真的想制作定制的复杂图形,了解lattice只会对您有所帮助。除此之外,其他两个系统提供您所需的一切,并且使用起来相当简单。

共有4个绘图系统。有标准、栅格、晶格和ggplot2。后两个是建立在前两个基础上的更高层次的系统。各有利弊

标准图形为您提供了对绘图的绝对控制,并且可以按照您喜欢的方式绘制一个绘图。Lattice的开发是为了解决需要绘图数组的情况。它非常灵活,可以在数据和任何变量上绘制大多数函数。如果您希望将任意函数应用于每个对象的数据,并将其显示为绘图网格,则lattice是您的宝贝。它构建在网格上,几乎是所有人使用网格包的唯一方式

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

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


(我是这么说的,但我大部分是用基本图形绘制的,因为我发现构建图形的每个组成部分都很有趣。)

感谢您的深入回答。只有一个问题-你所说的“高调图形”是什么意思?例如,这只是一个术语,用于命名在图形库中可以找到的外观非常奇特的复杂图形。我的用词并不总是最好的,因为英语不是我的母语。谢谢你的澄清。你指的是哪些细节,尤其是ggplot2无法控制的细节?我同意有很多“隐藏”的选择,但它们确实存在。(例如,theme_get())我想我可以进一步扩展。。。ggplot有一个良好的文档记录和使用的级别,在这个级别上控制是最小的。还有另外一个地方,一旦你找到了许多隐藏的选项,还有更多的选择。。。还有一些东西是你无法控制的,比如不规则的刻面,或者平滑函数的分辨率和边度(如果我想填充顶部的红色和底部的蓝色怎么办?)。我真的无法列出你无法控制的一切。不确定这是否会改变,但像标签偏移离轴这样简单的事情是不可能的。也就是说,我确实认为它处理95%以上的图形比人们自己能够处理的要好,而且这些对于许多人来说都是相对深奥的问题。我想保持原样,但请注意,随着这篇文章越来越老,ggplot2中的绘图控制功能越来越丰富。当它被写下来的时候,你能改变的比现在少。此外,还将添加更多内容。