ggplotly:R,标记跟踪名称但保留一行

时间:2016-04-10 19:00:50

标签: r ggplot2 plotly kernel-density

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

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

它创建了以下内容:

enter image description here

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

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

该命令创建以下内容:ggplot

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

2 个答案:

答案 0 :(得分: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)
)

答案 1 :(得分:0)

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

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

clarity添加到混合中后(通过clarity美学),ggplot正确地将各种text分开,以便它有一个clarities来引用。您可以通过将clarity添加到cut来强制将其重新分组到group=cut,但是您将失去aes工具提示,因为那里有clarity工具提示当您仅按clarity进行分组时,cut没有任何有意义的价值 - 再次,每个点都是一次性的明确。

理查德的解决方案只是一次显示两个图形,但使clarity - 分组的图形不可见。我不确定这里最初的目标是什么,但这并没有完成任何有用的事情,因为除了正确分组的cut频段之外,它只是让你鼠标悬停在不可见的峰值上。 / p>

我不确定您的原始数据是什么,但您只是无法显示两个维度,只能通过其中一个维度进行分组。您必须使用准确表示第二维的多条曲线,或者通过对其进行某种总结来展平第二维 - 在clarity的情况下,不存在你可以做任何明智的总结,但如果是价格,你可以显示平均值。