我有一个包含干预措施的数据框,以及每个干预措施的年龄组和转诊数量。推荐数量差异很大,从个位数到数百个。我尝试使用对数刻度,该刻度在某些情况下有效,但在其他情况下显示奇怪的值(例如 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()
如果有任何意见,我将非常感激。我确信我错过了一些明显的东西。
如果您想同时显示组比例和总数,您可以垂直映射比例,水平映射总数。这样,高度显示类别内的比例,面积与绝对数字成正比。在这种情况下相当极端。
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))