2015-02-25 2 views
-3

Я работаю с R и пакетом «ggplot2». Я пытаюсь напечатать несколько гистограмм рядом друг с другом:Печать гистограмм рядом друг с другом в R

library(ggplot2) h=ggplot(data, aes(x=Return1)) h+ geom_histogram(binwidth = 0.1) h + facet_grid(Return1 + Return2)

Он посылает сообщение об ошибке «Нет слоев в сюжете».

Вот пример данных:

data=matrix(rnorm(50, 0, 1), ncol=5) colnames(data)=c("Return1", "Return2", "Return3", "Return4", "Return5") rownames(data)=c("1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004")

Цель состоит в том, чтобы иметь гистограмму со значениями моей первой переменной «return1», другая гистограмма с моими значениями моей второй переменной «Return2» , ...

Я не уверен, что я использую правильную функцию (facet_grid) для этого. Благодарим вас за помощь.

swiMa

+0

дают пример данных –

+0

Вот пример данные. Спасибо за помощь. 'data = matrix (rnorm (50, 0, 1), ncol = 5) colnames (data) = c (" Return1 "," Return2 "," Return3 "," Return4 "," Return5 ") rownames (данные) = c («1995», «1996», «1997», «1998», «1999», «2000», «2001», «2002», «2003», «2004») ' – swiMa

+0

полный ответ ниже! –

ответ

0
data <- structure(c(-0.447315711911355, 0.670646511357067, 0.28805337765816, 
0.210323243582978, 0.558951367403988, 0.607248748494035, -1.16412611819213, 
0.0915424491269807, 0.469191549286902, -0.619038988584179, -0.659390830669932, 
-0.924810741449363, -1.42269762267215, -0.13593956988495, -1.92882493234572, 
-1.27638233136087, 1.3816213467106, 0.365757310517179, -0.479538532782686, 
0.70769126786196, -0.326429694012458, -1.01751602957572, 0.555459246627799, 
-0.355015029145993, -0.065915904785214, 0.576685372310354, 1.08050319208107, 
-0.697995949639672, 0.661562203593662, 0.0968130184654234, -0.672212026424006, 
0.0269233940788362, 0.661236459007207, -0.507557327616088, -0.800274398837844, 
1.93302333485735, -1.28135392022731, 1.33095400120017, -0.377753506417346, 
0.700663669871313, -1.08566228220391, -1.08906574084574, -1.04577335310861, 
0.956870855865283, -2.21389083133313, 0.299118475920725, 0.523434618906021, 
0.0428254530914905, 0.443157396704438, 2.00841231202171), .Dim = c(10L, 
5L), .Dimnames = list(NULL, c("Return1", "Return2", "Return3", 
"Return4", "Return5"))) 

Вы можете использовать простую Hist функцию, чтобы привести все вместе

par(mfrow=c(1,5)) 
hist(data[,1]) 
hist(data[,2]) 
hist(data[,3]) 
hist(data[,4]) 
hist(data[,5]) 

можете использовать опцию gplot

вам необходимо установить пакет следующим

install.packages("gridExtra") 

Примечание: не забудьте загрузить библиотеку и добавить любой необходимый пакет или библиотеку требует

p1<- qplot(data[,1], binwidth=.5) 
p2<- qplot(data[,2], binwidth=.5) 
p3<- qplot(data[,3], binwidth=.5) 
p4<- qplot(data[,4], binwidth=.5) 
p5<- qplot(data[,5], binwidth=.5) 
grid.arrange(p1, p2, p3, p4,p5, ncol=2) 

или вы можете использовать ggplot следующим образом:

row.names (data) <- NULL 
df<- as.data.frame(data) 
p1<- ggplot(df, aes(df[,1])) + geom_histogram(binwidth=.5) 
p2<- ggplot(df, aes(df[,2])) + geom_histogram(binwidth=.5) 
p3<- ggplot(df, aes(df[,3])) + geom_histogram(binwidth=.5) 
p4<- ggplot(df, aes(df[,4])) + geom_histogram(binwidth=.5) 
p5<- ggplot(df, aes(df[,5])) + geom_histogram(binwidth=.5) 
grid.arrange(p1, p2, p3, p4,p5, ncol=2) 
+0

Большое спасибо. Это работает, что мне нужно. – swiMa

+0

@swiMa приветствуются –

0

Для использования facet_grid, необходимо создать столбец (названный возвращается к примеру) в данных, которая содержит: return1, Return2 ... И потом: h + facet_grid(.~returns) Но я думаю, что переменная вы использование в facet_grid должно отличаться от x в aes()

+0

Благодарим вас за ответ. Это то, что я видел на примерах в Интернете. С помощью данных диафрагмы он использовал «вид» и делал диаграммы в соответствии с этой переменной, но в моем примере я просто один, чтобы печатать диаграммы рядом друг с другом, как с «par (mfrow = c (1,2)) #two гистограммы на одной строке ". – swiMa

0

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

data <- matrix(rnorm(50, 0, 1), ncol=5) 
colnames(data) <- c("Return1", "Return2", "Return3", "Return4", "Return5") 
rownames(data) <- c("1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004") <- 

df <- as.data.frame(data) # since ggplot2 requires a data frame 
df.m <- 

ggplot(df, aes(x=Return1, y=Return2)) + #added the second variable as y 
    geom_histogram(stat = "identity") + # need to set the stat 
    facet_grid(Return1 ~ Return2) # note the tilde operator 
+0

Я получаю некоторые ошибки с кодом. 'Укладка не определена корректно, когда ymin! = 0' Nemo может найти ниже решение для того, что я искал. Благодарим вас за помощь! – swiMa

Смежные вопросы