在ggplot2上添加注释会导致密度图消失。

huangapple go评论84阅读模式
英文:

adding annotations on ggplot2 causes density plot to disappear

问题

以下是您提供的内容的中文翻译:

我正在为一个项目制作多个密度图。当我在添加到图中的分位数竖线上添加注释时,会导致密度图消失。

  1. d2 <- pt_diff %>%
  2. summarize(lower = quantile(spread, probs = 0.40),
  3. upper = quantile(spread, probs = 0.60))
  4. p <- ggplot(pt_diff, aes(x = spread)) +
  5. geom_density(aes(fill = 'red')) +
  6. geom_vline(data = d2, aes(xintercept = lower)) +
  7. geom_vline(data = d2, aes(xintercept = upper)) +
  8. ggtitle(paste0(current_week$home.team.name[k],' vs. ', current_week$away.team.name[k]))

在这里,密度图显示出来。

在ggplot2上添加注释会导致密度图消失。

当我给图加注释时:

  1. p <- ggplot(pt_diff, aes(x = spread)) +
  2. geom_density(aes(fill = 'red')) +
  3. geom_vline(data = d2, aes(xintercept = lower)) +
  4. annotate('text', label = round(d2$lower, 2), x = -30, y = 100) +
  5. geom_vline(data = d2, aes(xintercept = upper)) +
  6. annotate('text', label = round(d2$upper,2), x = 4.5, y = 200) +
  7. ggtitle(paste0(current_week$home.team.name[k],' vs. ', current_week$away.team.name[k]))

然后图就消失了:

在ggplot2上添加注释会导致密度图消失。

有人知道为什么会发生这种情况吗?

谢谢。

英文:

I'm making a number of density plots for a project I'm working on. When I add annotations to the quantile vline that I add to the graph, it causes the density plot to disappear.

  1. d2 &lt;- pt_diff %&gt;%
  2. summarize(lower = quantile(spread, probs = 0.40),
  3. upper = quantile(spread, probs = 0.60))
  4. p &lt;- ggplot(pt_diff, aes(x = spread)) +
  5. geom_density(aes(fill = &#39;red&#39;)) +
  6. geom_vline(data = d2, aes(xintercept = lower)) +
  7. geom_vline(data = d2, aes(xintercept = upper)) +
  8. ggtitle(paste0(current_week$home.team.name[k],&#39; vs. &#39;, current_week$away.team.name[k]))

here the density plot shows up.

在ggplot2上添加注释会导致密度图消失。

When I annotate the plot:

  1. p &lt;- ggplot(pt_diff, aes(x = spread)) +
  2. geom_density(aes(fill = &#39;red&#39;)) +
  3. geom_vline(data = d2, aes(xintercept = lower)) +
  4. annotate(&#39;text&#39;, label = round(d2$lower, 2), x = -30, y = 100) +
  5. geom_vline(data = d2, aes(xintercept = upper)) +
  6. annotate(&#39;text&#39;, label = round(d2$upper,2), x = 4.5, y = 200) +
  7. ggtitle(paste0(current_week$home.team.name[k],&#39; vs. &#39;, current_week$away.team.name[k]))

then the plot disappears:
在ggplot2上添加注释会导致密度图消失。

Does anyone have any idea why this would happen?

thanks.

答案1

得分: 2

以下是您要翻译的内容:

正如 @r2evans 在评论中已经提到的,文本的 y 值太高了。请记住,在 0.0 到 y 值之间。

这里提供了将注释的 x 和 y 值设置为主要值和最大值的解决方案:

  1. library(ggplot2)
  2. # 随机数据
  3. set.seed(123)
  4. pt_diff <- data.frame(spread = rnorm(1000))
  5. # 分位数
  6. d2 <- pt_diff %>%
  7. summarize(lower = quantile(spread, probs = 0.40),
  8. upper = quantile(spread, probs = 0.60))
  9. ggplot(pt_diff, aes(x = spread)) +
  10. geom_density(aes(fill = 'red')) +
  11. geom_vline(data = d2, aes(xintercept = lower)) +
  12. annotate('text', label = round(d2$lower, 2), x = min(pt_diff$spread), y = max(density(pt_diff$spread)$y)/2) +
  13. geom_vline(data = d2, aes(xintercept = upper)) +
  14. annotate('text', label = round(d2$upper,2), x = max(pt_diff$spread), y = max(density(pt_diff$spread)$y)/2) +
  15. ylim(0, max(density(pt_diff$spread)$y)*1.5)
  16. )

在ggplot2上添加注释会导致密度图消失。

英文:

As @r2evans already stated in the comments thy y values are to high for the text. Remember you have in 0.0.. y-values.

Here is a solution setting the x and y values of the annotation to the main and max of the values:

  1. library(ggplot2)
  2. # random data
  3. set.seed(123)
  4. pt_diff &lt;- data.frame(spread = rnorm(1000))
  5. # quantiles
  6. d2 &lt;- pt_diff %&gt;%
  7. summarize(lower = quantile(spread, probs = 0.40),
  8. upper = quantile(spread, probs = 0.60))
  9. ggplot(pt_diff, aes(x = spread)) +
  10. geom_density(aes(fill = &#39;red&#39;)) +
  11. geom_vline(data = d2, aes(xintercept = lower)) +
  12. annotate(&#39;text&#39;, label = round(d2$lower, 2), x = min(pt_diff$spread), y = max(density(pt_diff$spread)$y)/2) +
  13. geom_vline(data = d2, aes(xintercept = upper)) +
  14. annotate(&#39;text&#39;, label = round(d2$upper,2), x = max(pt_diff$spread), y = max(density(pt_diff$spread)$y)/2) +
  15. ylim(0, max(density(pt_diff$spread)$y)*1.5)
  16. )

在ggplot2上添加注释会导致密度图消失。

huangapple
  • 本文由 发表于 2023年5月14日 19:43:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/76247303.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定