Р: Как мне создать Grid-графику?

Цель

введите здесь описание изображения

Код

require(lattice)

png('my_typing.png')
par(mfrow=c(2,1))

read.csv('race_data.csv')->sol
plot(sol$Race.., sol$WPM*sol$Accuracy, type='l')

# TODO: it wrongly substitutes the plot with levelplot
# TODO: I want two plots one below another, plot and then levelplot below
levelplot(cor(sol[1:5]))

Вспомогательные вопросы

  1. Как я могу построить обычный график и специальный график вместе в одном файле PNG?

  2. Должен ли я комбинировать различные графические пакеты, такие как решетка и сетка, в основу?


person hhh    schedule 18.08.2012    source источник
comment
cran.r-project.org/web/packages/gridBase/index. html   -  person rcs    schedule 18.08.2012
comment
Надеюсь, я не изменил вопрос. Под сеткой я подразумеваю такие вещи, как на картинке. Остерегайтесь путаницы, я не имею в виду только вещи под Grid -pkg. Я не уверен, должен ли я задавать вопрос типа "How should I create grid-graphics?" -- чтобы убедиться, что мне интересно также узнать мнения за и против различных подходов...   -  person hhh    schedule 19.08.2012


Ответы (2)


Пакет gridBase, обеспечивающий некоторую поддержку объединения сетки и базы. вывод графики.

Вот простой пример:

library("grid")
library("gridBase")
library("lattice")

# example from levelplot help page
x <- seq(pi/4, 5 * pi, length.out = 100)
y <- seq(pi/4, 5 * pi, length.out = 100)
r <- as.vector(sqrt(outer(x^2, y^2, "+")))
g <- expand.grid(x=x, y=y)
g$z <- cos(r^2) * exp(-r/(pi^3))
p <- levelplot(z~x*y, g, cuts = 50, scales=list(log="e"), xlab="",
               ylab="", main="lattice levelplot",
               colorkey=FALSE, region=TRUE)

grid.newpage()
pushViewport(viewport(layout=grid.layout(2, 1,
                                         heights=unit(c(2, 1), "null"))))
vp <- pushViewport(viewport(layout.pos.row=1, layout.pos.col=1))
par(omi=gridOMI())
# base graphics
plot(1:10, main="base graphics plot")
popViewport()
# lattice plot
vp <- pushViewport(viewport(layout.pos.row=2, layout.pos.col=1))
print(p, vp=vp, newpage=FALSE)
popViewport()
popViewport()

пример gridBase

person rcs    schedule 18.08.2012
comment
Что вы думаете о смешении разных синтаксисов для создания Grid-графики, подобной картинке в q? MR отговаривал от этого в #R и предлагал использовать последовательно один формат. - person hhh; 19.08.2012
comment
Я также был бы последователен; Я предпочитаю ggplot2, но иногда использую и lattice. - person rcs; 19.08.2012
comment
Итак, вы предлагаете мне использовать ggplot2 для генерации сетки-графики? Сравнение ggplot2 и решетки здесь. Так что для новичка вроде меня лучше начать изучать ggplot2 вместо того, чтобы играть с этой комбинацией -pkg и несоответствиями? - person hhh; 19.08.2012
comment
Я не совсем понял: вы предлагали не использовать gridBase? Я пока не могу понять, смогу ли я сделать всю GridGraphics с ggplot2 без gridBase. - person hhh; 19.08.2012

МИСТЕР. в #R рекомендуется использовать только один тип сюжета -вещи. Функции Trellis не взаимозаменяемы с базовыми функциями, поэтому следует также перепрограммировать синтаксис для таких вещей, как линия тренда и заголовки. В противном случае вы со временем создадите синтаксическую путаницу и последовательность для собак.

Я пытаюсь найти альтернативные способы работы с Grid-графикой, так что работа еще не завершена.

Различные способы создания Grid-графики

<сильный>1. Trellis — способ ведения дел с использованием решетки -pkg, код здесь

введите здесь описание изображения

<сильный>2. Объединение разных сюжетных пакетов

МИСТЕР. не рекомендуется таким образом, но способ rcs сделать это здесь. Согласно MR, grid — это "much more user friendly way of creating grid grapics", поэтому я думаю, что его стоит изучить, и такие вещи, как решетка и ggplot2, построены поверх сетки. Пожалуйста, ознакомьтесь с этой статьей об объединении базовых -графических-функций и сеточных -графических-функций здесь.

person hhh    schedule 18.08.2012