Несмотря на то, что можно преобразовать масштаб, чтобы больше фокусироваться в верхней области (например, добавить trans = "exp"
в качестве аргумента для масштаба), нелинейную шкалу часто трудно интерпретировать соответствующим образом.
Для такихВ случаях использования я рекомендую facet_zoom
из пакета ggforce, который в значительной степени построен именно для этой цели (см. виньетка здесь ).
Я также переключился с geom_violin() + coord_flip()
на geom_violinh
из пакета ggstance, который расширяет ggplot2, предоставляя перевернутые версии компонентов ggplot.Пример с смоделированными данными ниже:
library(ggforce) # for facet_zoom
library(ggstance) # for flipped version of geom_violin
ggplot(df,
aes(x = rating, y = year, fill = year)) +
geom_violinh() + # no need to specify trim = TRUE as it's the default
scale_fill_brewer(palette = "Blues") +
theme(legend.position = 'none') +
facet_zoom(xlim = c(0.75, 0.98)) # specify zoom range here
Пример данных, которые имитируют характеристики данных в вопросе:
df <- diamonds[, c("color", "price")]
df$rating <- (max(df$price) - df$price) / max(df$price)
df$year <- df$color