【问题标题】:ggplotly: R, labeling trace names but keep one lineggplotly:R,标记跟踪名称但保留一行
【发布时间】:2016-04-10 19:00:49
【问题描述】:

我正在为与diamonds 非常相似的数据框创建一个 ggplotly。到目前为止,这是我所拥有的:

ggplotly(ggplot(diamonds, aes(depth, colour = cut)) +
geom_density() +
xlim(55, 70))

它创建以下内容:

当您将鼠标悬停在轨迹上时,它会显示:深度、切割和密度。我还想显示清晰,所以我添加了以下内容:

ggplotly(ggplot(diamonds, aes(depth, text = paste("Clarity: ", clarity), colour = cut)) +
 geom_density() +
 xlim(55, 70))

该命令创建以下内容:

当我将鼠标悬停在曲线上时,它会显示深度、清晰度、切割和密度。这就是我想要的。但是,如何将密度保持为一条曲线,就像我创建的第一个图中一样,而不是多条曲线?

【问题讨论】:

  • 尝试不使用aes 文本,但您必须写diamonds$clarity

标签: r ggplot2 plotly kernel-density


【解决方案1】:

这行得通吗?将额外线条的 alpha 设置为 0(因此它们变得透明。使用 geom_line 作为 geom_density 仅使用 alpha 进行填充。(系统问题阻止测试)

ggplotly(
  ggplot(diamonds, aes(depth, colour = cut)) +
    geom_density() +
    geom_line(aes(text = paste("Clarity: ", clarity)), stat="density", alpha=0) + 
    xlim(55, 70)
)

【讨论】:

  • 它没有用。它为每个切割显示一条内核密度线,但仅显示三个轨迹名称:深度、切割和密度。 NA 删除了多余的线条,但如果我将鼠标悬停在它们曾经所在的位置上,它会显示四个轨迹名称:深度、切割、清晰度和密度。
【解决方案2】:

我意识到这是一个旧答案,但这里的主要问题是您正在尝试做一些逻辑上不可能的事情。

claritycut 是两个独立的维度,因此您不能简单地将clarity 放在由cut 分组的行的工具提示中,因为该行代表所有不同clarity 的钻石s 组合在一起。

一旦您将clarity 添加到组合中(通过text 美学),ggplot 正确地将各种clarities 分开,因此它有一个clarity 可供参考。您可以通过将group=cut 添加到aes 来强制它仅按cut 分组,但是您将丢失clarity 工具提示,因为当您仅按分组时clarity 没有有意义的值cut - 再一次,每一点都是清晰的。

Richard 的解决方案只是同时显示两个图表,但使 clarity 分组的图表不可见。我不确定这里最初的目标是什么,但这并没有完成任何有用的事情,因为除了正确分组的 cut 波段之外,它只会让您将鼠标悬停在不可见的峰上。

我不确定您的原始数据是什么,但您根本无法显示二维并仅按其中一个进行分组。您要么必须使用准确表示第二维的多条曲线,要么通过对其进行某种汇总来展平第二维 - 在clarity 的情况下,您实际上无法进行任何明智的汇总,但如果是价格,你可以显示一个平均值。

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2012-09-13
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多