Boxplot для нескольких переменных с разным масштабом Y - PullRequest
1 голос
/ 14 апреля 2020

У меня есть 4 переменные (A, B, C, D) с похожим рисунком в 3 местах. Я хотел бы построить прямоугольную диаграмму (переменные в виде точек на оси Y, местоположения в виде X). Но переменные имеют значения разных порядков. Есть ли способ масштабирования оси Y и все ли переменные нанесены на графики? Может быть, отличается по цвету масштабированная ось Y?

Могу ли я добавить легенду, показывающую только "A" и "D"?

enter image description here

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Если вы преобразуете свои данные в «длинный» формат, фасетирование является одним из вариантов. Обратите внимание, что вы должны установить scales = 'free' в facet_wrap().

library(tidyverse)

df.long <- df %>% 
  pivot_longer(A:D, names_to = 'variable', values_to = 'value')

g <- ggplot(data = df.long, aes(x = Location, y = value)) +
  geom_boxplot() +
  facet_wrap(facets = ~variable, scales = 'free')
print(g)

enter image description here

Если вы хотите получить все на одном участке, вы бы приходится масштабировать данные по группе. Здесь я нормализовал каждую точку данных в диапазоне от 0 до 1 относительно ее исходного масштаба.

df.long <- df %>% 
  pivot_longer(A:D, names_to = 'variable', values_to = 'value') %>% 
  group_by(variable) %>% 
  mutate(value_norm = value - min(value), 
         value_norm = value_norm / max(value_norm)
  )

g.norm <- ggplot(data = df.long, aes(x = Location, y = value_norm, fill = variable)) +
  geom_boxplot()
print(g.norm)

enter image description here

1 голос
/ 14 апреля 2020

Попробуй это. Использование scale_y_log10. Не самый красивый сюжет, но ...

library(ggplot2)
library(tidyr)
library(dplyr)

df %>% 
  pivot_longer(-Location) %>% 
  ggplot(aes(x=Location, y=value, color = name)) + 
  geom_boxplot() +
  geom_dotplot(aes(fill = name), color = "black", binaxis='y', dotsize=.5) +
  scale_y_log10()
#> `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

Создано в 2020-04-14 пакетом Представить (v0 .3.0)

...