当我使用 ggplotly() 将 ggplot 直方图转换为动态图时,我假设悬停会带来区间的中点。这对我的公众来说并不直观。我需要它来显示间隔。例如:[x,y)或类似的东西。我该怎么做?
下面是一个包含鸢尾花数据集的简单示例。
library(tidyverse)
library(plotly)
iris %>%
ggplot(
aes(
x = Sepal.Length
)
) +
geom_histogram() -> p
ggplotly(p)
也许还有一件事:当我创建 ggplot2 直方图时,我知道我可以控制箱的数量和箱的大小。有没有办法进行更多的控制,也许将所有内容都设置为手动?
提前感谢,对不起英语不好!
您可以尝试事先计算binwidthbw
。我为此借用了这里的解决方案。然后计算中断hist_breaks
并使用text
添加间隔cut
作为标签aes
内的。
x <- iris$Sepal.Length
bw <- 2 * IQR(x) / length(x)^(1/3)
num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
hist_breaks <- c(min(x)+ 0.1 - bw/2, rep(bw, num_bins+1)) %>% cumsum()
p <- iris %>%
mutate(label =cut(Sepal.Length, hist_breaks)) %>%
ggplot(aes(x = Sepal.Length, text = label)) +
geom_histogram(binwidth = bw)
ggplotly(p, tooltip = c("count", "text"))
剧情
使用p + geom_vline(xintercept = hist_breaks)
检查边界是否正确