3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
你說(shuō) :
也許我的data.frame格式不正確?
是的,這是真的。您的數(shù)據(jù)為寬格式,您需要以長(zhǎng)格式輸入。一般來(lái)說(shuō),長(zhǎng)格式更適合變量比較。
使用reshape2例如,你做到這一點(diǎn)使用melt:
dat.m <- melt(dat,id.vars = "Rank") ## just melt(dat) should work
然后您得到了您的barplot:
ggplot(dat.m, aes(x = Rank, y = value,fill=variable)) +
geom_bar(stat='identity')
但是,使用lattice和barchart智能公式符號(hào),你不需要重塑你的數(shù)據(jù),只是這樣做:
barchart(F1+F2+F3~Rank,data=dat)

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
您需要將數(shù)據(jù)轉(zhuǎn)換為長(zhǎng)格式,并且不應(yīng)$在內(nèi)部使用aes:
DF <- read.table(text="Rank F1 F2 F3
1 500 250 50
2 400 100 30
3 300 155 100
4 200 90 10", header=TRUE)
library(reshape2)
DF1 <- melt(DF, id.var="Rank")
library(ggplot2)
ggplot(DF1, aes(x = Rank, y = value, fill = variable)) +
geom_bar(stat = "identity")

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
基于羅蘭的答案,tidyr用于將數(shù)據(jù)從寬到長(zhǎng)整形:
library(tidyr)
library(ggplot2)
df <- read.table(text="Rank F1 F2 F3
1 500 250 50
2 400 100 30
3 300 155 100
4 200 90 10", header=TRUE)
df %>%
gather(variable, value, F1:F3) %>%
ggplot(aes(x = Rank, y = value, fill = variable)) +
geom_bar(stat = "identity")
- 3 回答
- 0 關(guān)注
- 632 瀏覽
添加回答
舉報(bào)