【问题标题】:What determines the parent in ggplot "normalized parent coordinates"?是什么决定了ggplot“标准化父坐标”中的父级?
【发布时间】:2021-07-13 14:10:47
【问题描述】:

在本例中,统计文本的位置以“标准化父坐标”(NPC)给出:

ggplot2::ggplot(data.frame(x = c(2, 3, 4), y = c(2, 2.5, 4)), 
    aes(x = x, y = y)) +
    ggplot2::coord_cartesian(xlim = c(1, 5), ylim = c(1, 5)) +
    ggpubr::stat_cor(label.x.npc = 0, label.y.npc = 1)

但是,标签并不是像人们想象的那样从(1, 5) 开始(如果是父级的笛卡尔坐标系),而是从(2, 4) 开始,数据的限制。为什么呢? NPC中的父母由什么决定?

【问题讨论】:

  • 对于vanilla ggplot2,父级是面板,所以是位置比例限制+扩展。在内部,ggplot2 使用scales::rescale(your_data, to = c(0, 1), from = panel_limits)(伪代码)将数据转换为 npcs。不过我不知道 ggpubr 函数。

标签: r ggplot2 coordinates parent


【解决方案1】:

更新:

这是对 Christophe Nicault 知识的总结,这里以奇妙的方式提供 https://www.christophenicault.com/post/npc_ggplot2/

  • 在 ggplot2 中,坐标系(笛卡尔)用于放置 情节中的元素。如果您使用一个地块,这就足够了。
  • 如果要放置多个绘图或元素,则相对 使用缩放到父元素。对于这个任务,我们使用不同的 称为“归一化父坐标”或 NPC 的坐标系。

定义: NPC = 归一化父坐标 -> 归一化从 0 到 1 的父坐标。

  • 原点是 (0, 0) 例如左下角
  • 右上角位于坐标 (1, 1)
  • 两个轴的最大尺寸为 1

例如: npc 视口的原点是 (0,0),宽高为 1 个单位(例如 (0.5, 0.5) 是视口的中心)。

第一个答案 使用此代码stat_cor(method = "pearson", label.x = 1, label.y = 5),您可以将参数放置在笛卡尔坐标系中的任何位置

library(ggpubr)
ggplot2::ggplot(data.frame(x = c(2, 3, 4), y = c(2, 2.5, 4)), 
                aes(x = x, y = y)) +
  ggplot2::coord_cartesian(xlim = c(1, 5), ylim = c(1, 5)) +
  stat_cor(method = "pearson", label.x = 1, label.y = 5)

【讨论】:

  • 谢谢你 - 这不是问题,不幸的是:)
  • 我试图给出解释。请看我的编辑。我不确定。
  • 不幸的是,你又回答了另一个问题,但不是我的;)问题不是“什么是 NPC 以及它们是如何使用的”,而是“NPC 中的父级是什么”?
  • 好的。对不起。我认为 NPC 中的父母是原点 (0, 0) 例如左下角。无论如何,这是一个好问题!
  • 是的,它是起源,但是什么? ;) 显然不是笛卡尔坐标系,请参阅我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多