【问题标题】:Relationship between plotting packages in RR中绘图包之间的关系
【发布时间】:2011-04-14 14:09:48
【问题描述】:

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

这些软件包是互补的,还是它们涵盖的内容大致相同?如果它们是互补的,我什么时候使用它们?如果他们涵盖相同的领域,作为 R 的新用户,我应该把精力放在掌握哪一个?

【问题讨论】:

    标签: r visualization plot ggplot2 lattice


    【解决方案1】:

    有 4 个绘图系统。有标准、网格、格子和ggplot2。后两者是建立在前两者之上的更高级别的系统。各有优缺点。

    标准图形让您可以完全控制绘图,并且非常适合按照您喜欢的方式制作一个绘图。 Lattice 是为了解决您需要绘图数组的情况而开发的。它非常灵活,可以在您的数据和任何变量上绘制大多数函数。如果您希望将任意函数应用于每个受试者的数据并以图网格的形式呈现,那么 lattice 就是您的宝贝。它建立在 grid 之上,几乎是任何人使用 grid 包的唯一方式。

    最新的 ggplot2 既是一个绘图包,也是一种新的绘图哲学。它基于 Wilkinson 的“图形语法”,并试图做到这一点,为图形生成语法。一个人只需要学习诸如 geom(你绘制的内容)、stat(数据统计)、facet(单个面板)等术语的高级语法,你就可以构建非常复杂的图表。它们通常非常可爱,特别是对于电子发行。不幸的是,无法对每个单独的细节进行精细控制。有些事情你根本无法调整。尽管如此,许多人都得出了一个明智的结论,即用简单的方法来描述高质量的情节是一个很小的代价。

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

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

    【讨论】:

    • 哪些细节,特别是你指的是不能用ggplot2控制的?我同意有很多“隐藏”选项,但它们肯定存在。 (例如,theme_get())
    • 我想我可以进一步扩展...... ggplot 有一个很好的文档记录和使用的级别,控制最小。然后还有一个更多的地方,一旦你找到许多隐藏的选项......然后有一些你无法控制的东西,比如不规则刻面或平滑函数的分辨率和边度(如果我想填充顶部怎么​​办?红色和底部蓝色?)。我真的无法列出你无法控制的一切。不知道这是否改变了,但是像轴标签偏移这样简单的事情不可能的。
    • 也就是说,我确实认为它处理 95% 以上的图表比人们自己处理的要好,而且这些对于许多人来说都是相对深奥的问题。
    • 我想保持原来的帖子不变,但请注意,随着这篇文章变老,在 ggplot2 中绘图的控制变得越来越丰富。当它被写出来时,你可以改变的东西比现在少。而且,还会添加更多内容。
    【解决方案2】:

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

    Lattice 是一种基于网格的绘图设备,具有更大的灵活性。你基本上可以绘制任何你想要的东西,如R Graph Gallery 所示。图表也可以被注释。在我看来,Lattice 对可定制的高端图形非常有用。我主要在制作彩色地图、3D 可视化和数据的不同子集的组合图时使用它(例如,在模型构建中,用于不同术语的效果。)。另见Using lattice graphics in R

    ggplot2 实际上是一种结合两种系统优点的尝试:您保留了 lattice 的大部分灵活性,但您可以像使用标准绘图一样处理易于定义的图形对象。图形输出通常比标准包中的标准设置更好看,并且比 lattice 更省事。就个人而言,我对 ggplot2 的经验很少,但它看起来肯定很有希望。我仍然更喜欢基本图形包,但这可能与我习惯了这个事实有关。老猴子和新把戏等等……

    基本上,我会说选择你觉得最舒服的东西。我肯定会至少学习标准包的基础知识,但如果你不进入高调的图形,我想 ggplot2 会为你提供所需的一切。如果您真的想制作自定义的复杂图形,那么了解 lattice 只会对您有所帮助。但除此之外,其他两个提供了您需要的一切,并且可以直接使用。

    【讨论】:

    • 感谢您的深入回答。只有一个问题 - high-profile graphics 是什么意思?
    • 只是一个术语,用于命名可以在图形库中找到的非常漂亮的复杂图形。我选择的单词并不总是最好的,因为英语不是我的母语。
    • 感谢您的澄清。
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2015-04-17
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多