我有以下資料集:
var1 = as.data.frame(c(runif(100,2,10),rep(NA,900)))
var2 = as.data.frame(runif(1000,-1,9))
colnames(var1)<-"var1"
colnames(var2)<-"var2"
data <- cbind(var1 ,var2)
我想在一個圖中繪制 var1 和 var2 的直方圖,并作為鏡像圖表,而不從 var2 中洗掉行。
我使用了這個代碼:
p <- ggplot(data, aes(x=x) )
geom_histogram( aes(x = var1, y = ..density..), fill="#69b3a2" )
geom_label( aes(x=4.5, y=0.25, label="variable1"), color="#69b3a2")
geom_histogram( aes(x = var2, y = -..density..), fill= "#404080")
geom_label( aes(x=4.5, y=-0.25, label="variable2"), color="#404080")
theme_ipsum()
xlab("value of x")
p
我得到了這張圖表:

但似乎該圖不包括 var2 的 900 個值(它們被洗掉是因為我們在 var1 中有 900 個 NA)。

我不想用另一個值替換 NA,因為我沒有所需的圖形形狀,例如我用 0 替換了 NA,這就是我得到的:
data[is.na(data)]<-0

有沒有辦法用資料集中的所有值繪制圖形,并獲得與第一個圖相似的所需圖?
uj5u.com熱心網友回復:
我認為您只是對警告訊息感到困惑。該var2資料被該所描繪。為了讓您放心,讓我們修改您的資料框:
var1 = as.data.frame(c(runif(100,2,10), rep(NA, 900)))
var2 = as.data.frame(c(runif(100, -1, 3), runif(900, 5, 9)))
現在,你可以看到,如果所有地方的行var1就是NA被洗掉,你應該只看到var2值介于-1和3。如果var2被繪制,即使var1是NA,我們也應該得到5和9之間的一些值被繪制var2:
colnames(var1)<-"var1"
colnames(var2)<-"var2"
data <- cbind(var1 ,var2)
p <- ggplot(data, aes(x=x) )
geom_histogram( aes(x = var1, y = ..density..), fill="#69b3a2" )
geom_label( aes(x=4.5, y=0.25, label="variable1"), color="#69b3a2")
geom_histogram( aes(x = var2, y = -..density..), fill= "#404080")
geom_label( aes(x=4.5, y=-0.25, label="variable2"), color="#404080")
xlab("value of x")
p

所以你不必擔心;只有缺少條目的變數不會被繪制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/354419.html
