#r #plot #ggplot2
#r #график #ggplot2
Вопрос:
У меня есть следующий сюжет (заимствованный из http://www.statmethods.net/advgraphs/ggplot2.html ):
Создается следующим кодом:
library(ggplot2)
# create factors with value labels
mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5),
labels=c("3gears","4gears","5gears"))
mtcars$am <- factor(mtcars$am,levels=c(0,1),
labels=c("Automatic","Manual"))
mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
labels=c("4cyl","6cyl","8cyl"))
q <- qplot(hp, mpg, data=mtcars, shape=am, color=am, size=I(3), facets=gear~cyl,
xlab="Horsepower", ylab="Miles per Gallon")
print(q)
Теперь я бы хотел, чтобы ось «лучше масштабировалась». Например, ось колонны с 3 шестернями может быть масштабирована в диапазоне от 10 до 25. Однако я все еще хочу сохранить сетку cyl-gears, и мне нужна только одна шкала на столбец.
Итак, следующее не соответствует моим ожиданиям:
q <- qplot(hp, mpg, data=mtcars, shape=am, color=am, size=I(3),
xlab="Horsepower", ylab="Miles per Gallon")
q <- q facet_wrap(facets=gear~cyl, scales="free_y")
print(q)
Есть ли способ добиться этого с помощью ggplot2?
Ответ №1:
Если вам нужна только одна шкала для каждого столбца или строки, то вам следует использовать facet_grid()
вместо facet_wrap()
, потому что для facet_wrap()
каждого фасета с scales="free"
обрабатывается независимо и просто выравнивается по заданному вами количеству столбцов.
qplot(hp, mpg, data=mtcars, shape=am, color=am, size=I(3),
xlab="Horsepower", ylab="Miles per Gallon")
facet_grid(facets=gear~cyl, scales="free_y")