Многострочные графики с разными масштабами

Я хотел бы построить нестационарный тренд физических особенностей музыки.

Например,

from 1980 to 2010, the average song duration (unit: 100000 ms)
from 1980 to 2010, the average loudness (unit: 20dB)

Вы можете видеть, что они имеют разные масштабы, будет просто нарисовать линейный график для каждой из этих функций.

Но если я скажу, 30 таких функций, то уместно ли включать все эти линейные графики в один и тот же график? (Потому что нарисовать 30 независимых линейных сюжетов было бы напрасно.)

Если так, как я могу преодолеть проблему различного масштабирования (100000 мс против 20 дБ)? Я должен масштабировать данные в первую очередь?

Спасибо

1 ответ

Решение

Вот подход ggplot (проиллюстрированный с поддельными данными):

library(reshape2)
library(ggplot2)
library(ggthemes)

# Fake data
dat = mtcars[order(mtcars$mpg), c(1,3:7,11)]
dat = cbind(dat, setNames(dat, LETTERS[1:7]), setNames(dat, LETTERS[8:14]), 
            setNames(dat, LETTERS[15:21]), setNames(dat[,1:2], LETTERS[22:23]), 
            year=1980:(1980 + nrow(dat) - 1))

# Melt data to long format and plot
ggplot(melt(dat, id.var="year"), aes(year, value)) +
  geom_line(lwd=0.3) +
  facet_wrap(~ variable, ncol=5, scales="free_y") +
  theme_tufte(base_size=7) +
  expand_limits(y=0)

Другие вопросы по тегам