2012-05-29 4 views
0

У меня есть большая матрица mdat (1000 строк и 16 столбцов) содержит первый столбец в качестве x переменных и других столбцов как y переменных. То, что я хочу сделать, - сделать график рассеяния в R, имеющем 15 цифр в одном окне. Например:Как сделать несколько графиков в r?

mdat <- matrix(c(1:50), nrow = 10, ncol=5) 

В приведенной выше матрице у меня есть 10 строк и 5 столбцов. Возможно ли использовать первый столбец как переменную по осям x и другим столбцам как переменную по осям y, так что у меня есть четыре разных диаграммы рассеяния в одном окне? Имейте в виду, что я буду не предпочитает par(mfrow=, потому что в этом случае я должен запускать каждый график, а затем производить их в одном окне. Мне нужен пакет, поэтому я дам ему только данные и x, y varaibeles, и у вас есть графики в одних окнах. Есть ли какой-то пакет, который может это сделать? Я не могу его найти.

+0

Можете ли вы уточнить, что вы подразумеваете под "15 фигур на том же окне"? Один сюжет с 15 строками, показывающий 15 отношений (возможно, разных цветов)? Или 15 отдельных графиков в панели, возможно, 4 строки x 4 cols с отсутствием одного графика? Во втором случае ответ Шуджи будет работать. –

+0

shujas ответ работа. Теперь у меня есть другой вопрос о вашем первом случае. Возможно ли иметь 15 строк с разными цветами в одном окне с объяснением каждого цвета, чтобы можно было легко различить, какой цвет представляет какую переменную? – Iftikhar

+0

@ user4299 Большинство людей скажут вам, что 15 цветов слишком много, чтобы различать, но см. Мои правки для начала. – Gregor

ответ

2

@ user4299 Вы можете переписать ggplot команду shujaa в этой форме, используя qplot, что означает «быстрый график», который легче, когда начинал. Затем вместо огранки используйте variable для управления цветом. Поэтому первая команда производит тот же результат, что и ответ shujaa, затем вторая команда дает вам все строки на одном графике с разными цветами и легендой.

qplot(data = molten, x = V1, y = value, facets = . ~ variable, geom = "point") 
qplot(data = molten, x = V1, y = value, color = variable, geom = "point") 
4

Возможно, самый простой базой R способ mfrow (или mfcol)

par(mfrow = c(2, 2)) ## the window will have 2 rows and 2 columns of plots 
for (i in 2:ncol(mdat)) plot(mdat[, 1], mdat[, i]) 

См ?par все, что вам, возможно, захотите узнать о дальнейших корректировок.

Другим хорошим вариантом в базе R является layout (у справки есть несколько хороших примеров). Чтобы быть привлекательным и красивым, вы можете использовать пакет ggplot2, но вам нужно будет переформатировать ваши данные в длинный формат.

require(ggplot2) 
require(reshape2) 
molten <- melt(as.data.frame(mdat), id = "V1") 

ggplot(molten, aes(x = V1, y = value)) + 
    facet_wrap(~ variable, nrow = 2) + 
    geom_point() 

В качестве альтернативы с цветами вместо граней:

ggplot(molten, aes(x = V1, y = value, color = variable)) + 
    geom_point() 
2

Может

library(lattice) 
x = mdat[,1]; y = mdat[,-1] 
df = data.frame(X = x, Y = as.vector(y), 
       Grp = factor(rep(seq_len(ncol(y)), each=length(x)))) 
xyplot(Y ~ X | Grp, df)