2015-03-18 18 views
3

我有以下的數據幀結構使用GGPLOT2與有空格他們的名字列

df <- as.data.frame(A) 
colnames(df)<- c("Sum of MAE", "Company") 
df <- na.omit(df) 
df2 <- df[order(df[,1]),] 
df2 <- head(df2, n=10) 
ggplot(df2, aes_string("Sum of MAE", "Company", group=1) + geom_line()) 
print(df2) 

這是數據

Sum of MAE Company 
606 0.030156758080105 COCO 
182 0.0600065426668421 APWC 
836 0.0602272459239397  EDS 
1043 0.0704327240953608 FREE 
2722    0.09 VLYWW 
1334 0.0900000000000001 IKAN 
2420 0.104746328560384  SPU 
860 0.106063964745531 ELON 
2838 0.108373386847075 WTSL 
1721 0.110086738825851 MTSL 

的ggplot犯規的結構似乎工作。經過一連串的錯誤,目前我得到的是

Error in parse(text = x) : <text>:1:5: unexpected symbol 
1: Sum of 

有人可以幫助我獲得ggplot 2的工作。

+0

分享您的數據'dput(DF2)'所以我們可以看到底層結構和類。 – Gregor 2015-03-18 22:14:48

+0

這是巨大的,不適合在這裏。 – Jumper 2015-03-18 22:16:42

+1

然後對頭6行執行'dput(head(df2))'。此外,[這個問題也是你](http://stackoverflow.com/q/29127222/903061)?爲什麼這兩個賬戶?正如在這個問題中,我猜你需要指定'x'軸是公司。通過將其放在第二位,您將默認爲y軸。 – Gregor 2015-03-18 22:17:40

回答

5

呃,這就是爲什麼你應該總是確保你有有效的列名。首先,這裏是一個容易重現的版本的數據集的

df2 <- data.frame(`Sum of MAE` = c(0.030156758080105, 0.0600065426668421, 
    0.0602272459239397, 0.0704327240953608, 0.09, 0.0900000000000001, 
    0.104746328560384, 0.106063964745531, 0.108373386847075, 0.110086738825851 
    ), Company = c("COCO", "APWC", "EDS", "FREE", "VLYWW", "IKAN", "SPU", "ELON", 
    "WTSL", "MTSL"), check.names=F) 

ggplot(df2, aes_string("Sum of MAE", "Company", group=1) + geom_line()) 
# Error in parse(text = x) : <text>:1:5: unexpected symbol 
# 1: Sum of 
#  ^

的問題是,aes_string()使用parse()把你的文字表達到合適的[R符號可以在data.frame內解決。當你解析不合法的R語法的「MAE總和」時,也就是說,它不會解析爲單個漂亮的符號名稱。如果你使用這樣的「壞」名字,你可以用反碼將它們轉義,將表達式(空格和全部)當作符號。所以,你可以做

ggplot(df2, aes_string("`Sum of MAE`", "Company", group=1)) + geom_line() 
# or 
ggplot(df2, aes(`Sum of MAE`, Company, group=1)) + geom_line() 

但實際上它會更好地堅持使用有效的列名稱爲您data.frame而不是colnames繞過檢查()。

如果要更改列名以獲得「更好」的軸標籤,則應該使用xlab()來代替。例如

df3 <- data.frame(df2) 
names(df3) 
# [1] "Sum.of.MAE" "Company" 
ggplot(df3, aes(Sum.of.MAE, Company, group=1)) + 
    geom_line() + 
    xlab("Sum of MAE values") 
+0

我將名稱更改爲「Sum」,現在得到的錯誤是aes_string(「Sum」,「Company」,group = 1)中的錯誤+ geom_line(): 對二元運算符的非數字參數 – Jumper 2015-03-18 22:26:15

+0

嗯,你在原始示例中也有括號問題。試試我編寫的代碼,並將其與您正在運行的代碼進行比較。 – MrFlick 2015-03-18 22:27:22

+0

感謝此代碼似乎工作,從意義上說我沒有得到任何錯誤。但是我沒有看到R Studio的情節部分有任何情節。任何想法爲什麼? – Jumper 2015-03-18 22:29:53

0

不知道你想要繪製什麼,這裏是一個開始(和其他人可能會更好地理解)。

df <- read.table(textConnection(" 
           606 0.030156758080105 COCO 
           182 0.0600065426668421 APWC 
           836 0.0602272459239397  EDS 
           1043 0.0704327240953608 FREE 
           2722    0.09 VLYWW 
           1334 0.0900000000000001 IKAN 
           2420 0.104746328560384  SPU 
           860 0.106063964745531 ELON 
           2838 0.108373386847075 WTSL 
           1721 0.110086738825851 MTSL")) 
colnames(df) <- c("sum", "MAE", "Company") 
ggplot(df, aes(x=Company, y=MAE, group = 1)) + 
    geom_line() 

enter image description here

相關問題