Как построить две диаграммы с одинаковой осью X в R? - PullRequest
3 голосов
/ 18 февраля 2011

Как построить 2 диаграммы, используя одну и ту же ось X в R с ggplot2?

Я ищу что-то вроде: http://i.stack.imgur.com/B9QT7.png

Ответы [ 4 ]

6 голосов
/ 25 августа 2011

Используя набор данных экономики, о котором другие упоминали, может быть хорошим решением baseR.

layout(matrix(1:2, ncol = 1), widths = 1, heights = c(2,1.5), respect = FALSE)
par(mar = c(0, 4.1, 4.1, 2.1))
with(economics, plot(unemploy~date, type = 'l', xaxt = 'n', main = 'My Great Graph'))
par(mar = c(4.1, 4.1, 0, 2.1))
with(economics, plot(pop~date, type = 'l'))

my great graph

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

(этот код выполняется намного быстрее, чем решение ggplot2 ... в случае, если это имеет значение ... например, обновление на веб-сайте или что-то в этом роде, или у вас много данных, или вам нужно создать много таких графиков) 1009 *

2 голосов
/ 18 февраля 2011

Основная идея состоит в том, чтобы растопить набор данных, чтобы у вас были значения переменных, которые вы хотите построить на оси Y в одном столбце, а второй столбец отличает источник. Например:

data("economics")
dat.m <- melt(economics, measure.vars=c("pop", "unemploy"))

Затем используйте facet_grid для построения каждой переменной в отдельном фасете:

ggplot(dat.m, aes(x=date, y=value)) + geom_line() + facet_grid(variable~., scales="free_y")
1 голос
/ 18 февраля 2011

Финансовые графики Yahoo обычно являются интерактивными, где вы можете перемещать временное окно и другие функции. Чтобы получить аналогичный интерактивный эффект, я бы порекомендовал пакет googleVis. Сюжеты сделаны в веб-браузере, чтобы вы могли взаимодействовать с ними. Попробуйте:

install.packages("googleVis");library(googleVis);demo(googleVis)

восьмой график для всплывающего графика. Но это не ggplot.

0 голосов
/ 25 августа 2011

Схема стратегии Ista с использованием ggplot2 может быть достигнута также с помощью пакета lattice.Используя те же данные:

data("economics")
dat.m <- melt(economics, measure.vars=c("pop", "unemploy"))

Затем мы используем xyplot, определяя две строки и один столбец с помощью layout и форсируя отдельные масштабы оси Y, используя аргумент scales:

xyplot(value~date|variable,data = dat.m, 
    panel = "panel.lines", layout = c(1,2),
    scales = list(y = list(relation = "free")))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...