ggplotly:R,标记迹线名称但保留一行

ggplotly: R, labeling trace names but keep one line

我正在为与 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))

该命令创建以下内容:

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

这个有用吗?将额外线条的 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)
)

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

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

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

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

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