2016-05-04 79 views
0

我正在處理一個具有多個變量的數據集,如下面的示例所示;(實際數據集包含:84個obs.24個變量)。我想要創建一個能夠接受所有變量的圖形,而不是爲每個變量創建一個圖形。使用ggplot2創建一個多於2個變量的圖

Fruit Vitamin A(mg) Vitamin C(mg) Calcium(mg) 
Pear   61   8    11 
Apple  10   2    3 
Cherry  35   10   11 
Fig   5    2    67 

我曾嘗試下面的代碼,一個一個修改過的版本在論壇的一個建議;

library(ggplot2) 
g<- ggplot(FR, aes(Fruit) 
g + geom_point() + facet_grid(. ~ FR[2:26,]) 

我得到錯誤;

Error: unexpected symbol in: "g<- ggplot(FR, aes(Fruit) g"

我接受任何更好的建議替代品來表示數據集。

+0

'geom_point()'需要一個y和和x軸。您只指定了一個x軸。你想讓其他列成爲Y嗎? –

回答

2

如何:

enter image description here

要做到這一點,你需要使用gather{tidyr}重塑你的數據集。這裏有一個可重複的例子:

# load libraries 
    library(ggplot2) 
    library(ggthemes) 
    library(tidyr) 
    library(googleVis) 

# get data for a reproducible example 
    data("Fruits") 
    colnames(Fruits)[4] <- "Vitamin A(mg)" 
    colnames(Fruits)[5] <- "Vitamin C(mg)" 
    colnames(Fruits)[6] <- "Calcium(mg)" 
    Fruits <- Fruits[ c("Fruit","Vitamin A (mg)" , "Vitamin C (mg)", "Calcium (mg)")] 

# reshape the dataset 
    df <- gather(data=Fruits, key=Fruit) 
    colnames(df)[2] <- "vitamin" 


# Plot ! 
    ggplot(data=df) + 
    geom_point(aes(x=vitamin, y=value , color=vitamin)) + 
    facet_grid(Fruit~., scale="free_x") + 
    theme_minimal() 
+0

這是最接近我想要的,我做水果是我的x值。儘管對於小數據集來說情節看起來不錯,但它在所有與我一樣大的數據集上都聚集起來並模糊不清,我可能需要對變量進行分類。謝謝,這很有幫助。 – user5680053

1

我相信你錯過了一個右括號。變化:

g<- ggplot(FR, aes(Fruit) 

g<- ggplot(FR, aes(Fruit)) 

以我的經驗,「意外符號」錯誤通常意味着你忘了關括號或括號。

+0

我得到了錯誤:layout_base(data,cols,drop = drop)中的錯誤: 至少有一個圖層必須包含所有用於刻面的變量 – user5680053

0

您沒有足夠的指定軸。

ggplot(FR, aes(x = Fruit, y = Vitamin A(mg), 
    shape = as.factor(Fruit), 
    color = as.factor(Fruit))) + 
    geom_point() + 
    geom_point(aes(x = Fruit, y = Vitamin C(mg))) + 
    geom_point(aes(x = Fruit, y = Calcium(mg))) 

這就是你想要的嗎?

+0

適用於具有相同單位的變量,但不適用於我的情況,數據卡路里(千卡)。對不起,我忘了提前這一點。 – user5680053