2017-04-04 46 views
0

我想用這個數據做一個直方圖的例子,用ggplot2來創建圖形,然後我發現我不能做這個直方圖使用qplot命令的方面,我已經做了這種與另一個數據的情節,但現在我再次嘗試這個具體的數據,我不能這樣做。錯誤使用qplot facet?

這是代碼:

library(ggplot2) 
qplot(x  = diamonds$price, 
     geom = "histogram", 
     facets = .~diamonds$cut) 

正如你看到的其實是非常簡單的,但它給我的錯誤:

Error: value for ‘cut’ not found

,如果你做一個快速的研究你會發現,有價格值爲每個級別的切割因子。

diamonds$price[diamonds$cut=="Fair"] 
diamonds$price[diamonds$cut=="Good"] 
diamonds$price[diamonds$cut=="Very Good"] 
diamonds$price[diamonds$cut=="Premium"] 
diamonds$price[diamonds$cut=="Ideal"] 

我不明白什麼是錯的。

這是另一個例子。但這是行得通的。

x <- rnorm(120,20,20) 
y <- as.factor(c(rep("yo",60),rep("tu",60))) 
df <- data.frame(x,y) 
qplot(x = df$x, geom = "histogram", facets = .~df$y) 

這個數據有什麼不同?我看不到。

這告訴我,類變量在這個兩個示例相同

is.numeric(diamonds$price) 

[1] TRUE

is.numeric(x) 

[1] TRUE

is.factor(diamonds$cut) 

[1] TRUE

is.factor(y) 

[1] TRUE

請幫忙。

+3

這個問題似乎在'qplot'使用美元符號符號來幹。使用data參數來定義數據集,而不是'data = diamonds'。然後直接引用變量名稱,例如'facets =。〜cut'。 – aosmith

+0

qplot實際上支持使用$ simbol在數據框內使用矢量。我將編輯帖子以顯示該信息。 –

+0

你的解決方案實際上給我的情節,但我仍然不明白什麼是錯的代碼,爲什麼與第二個例子,但不是第一個?謝謝你的幫助。 –

回答

1

以下回答基於aosmith的幫助,謝謝。

的問題是,qplot實際上沒有讀取DF $ x和DF $ y的變量在實施例編號2:

library(ggplot2)  
x <- rnorm(120,20,20) 
y <- as.factor(c(rep("yo",60),rep("tu",60))) 
df <- data.frame(x,y) 
qplot(x = df$x, geom = "histogram", facets = .~df$y) 

在這個例子中,qplot被readind對象x和y,在所創建的前兩行,它從不使用df $ x或df $ y。

因此,在本例中數字1:

qplot(x  = diamonds$price, 
     geom = "histogram", 
     facets = .~diamonds$cut) 

沒有價格或削減對象的環境,這就是爲什麼我得到的錯誤。

解決方法:使用參數data =

這樣的:

qplot(data = diamonds, 
     x = price, 
     geom = "histogram", 
     facets = .~cut) 
+0

當我運行提問者的代碼時,雖然'鑽石'可用於從控制檯使用'str'進行檢查,但我得到'錯誤:沒有找到'鑽石'的值'。如果省略參數,則不會出現錯誤。這與您的主要觀點並不矛盾,即應該使用數據參數。 –

+0

我將'library(ggplot2)'命令添加到答案中。我沒有得到那個錯誤。 –

+0

我已在我的附件包列表中擁有ggplot2_2.2.1。 (請注意,我說「菱形」對'str'可見。)'library(ggplot2)'沒有效果。 –