4

次の棒グラフを生成するためのこのRコードコードがあります。

d <- data.frame(case = c(1,2,3,4), 
                var=c('foo', 'foo', 'foo', 'foo','bar', 'bar', 'bar', 'bar'), 
                val=c(9,2,2,4,6,1,2,3))
d$var <- as.factor(d$var)
d$case <- as.factor(d$case)
ggplot(d, aes(x = case, y = val, fill = var)) + scale_x_discrete() + geom_bar(position="dodge")

ここに画像の説明を入力してください

'bar'の値でバーを並べ替えるにはどうすればよいですか?

免責事項:これはhttps://stackoverflow.com/questions/10746342/sorting-ggplot2-box-plot-by-2-columnsの重複である可能性がありますが、これは回答されていないため、...

4

1 に答える 1

5

orderの値順に列を取得し、barそれを複製するために使用しfooます。次に、この列をに使用しますx

d$case <- match(d$val[d$var == "bar"], sort(d$val[d$var == "bar"]))
d$case <- factor(d$case, levels=1:4)
# now use this:
ggplot(d, aes(x = case, y = val, fill = var)) +  
         geom_bar(position="dodge", stat="identity")

(または同等に)

 ggplot(d, aes( x= order, fill = var)) + geom_bar(aes(weights=val), position="dodge")

ここに画像の説明を入力してください

于 2013-02-26T16:43:48.250 に答える