对数音阶播放

问题描述 投票:0回答:1

我有一个包含干预措施的数据框,以及每个干预措施的年龄组和转诊数量。推荐数量差异很大,从个位数到数百个。我尝试使用对数刻度,该刻度在某些情况下有效,但在其他情况下显示奇怪的值(例如 1e+10)。

我尝试使用下面的更简单的数据集重新创建错误,并且它“有效” - 它显示完全错误的值(下图)。

x <- data.frame(intervention   = rep(c("small", "big"), each = 3),
                age            = rep(c("18-29", "30-39", "40-49"), times = 2),
                N_refs         = c(2,3,5, 250,500,600))


x %>% 
  ggplot(aes(x=intervention, y=N_refs, fill = age)) + # reorder by frequency, max to min
  geom_bar(stat = "identity")+
  scale_y_continuous(trans='log10')

在此输入图片描述

我尝试绘制没有对数刻度的图表 - 精细、正确的值。 我尝试使用另一个对数刻度函数,但它给出了同样奇怪的结果。

scale_y_continuous(trans=log10_trans())
# or
scale_y_log10()

如果有任何意见,我将非常感激。我确信我错过了一些明显的东西。

r ggplot2 scale logarithm
1个回答
0
投票

如果您想同时显示组比例和总数,您可以垂直映射比例,水平映射总数。这样,高度显示类别内的比例,面积与绝对数字成正比。在这种情况下相当极端。

x |>
  mutate(total = sum(N_refs),
         share = N_refs / total, .by = intervention) |>
  ggplot(aes(intervention, share, fill = age, width = total/ max(total))) +
  geom_col() +
  geom_text(aes(label = N_refs), position = position_stack(vjust = 0.5))
    

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.