2016-10-25 14 views
0

スタックされたバーの中央にデータラベルを配置しようとしています。私はこの質問のアプローチに従っています:1 `。私は正しい順序でデータラベルを持つ方法を理解できません。バーは上に "1"、下に "2"が積み重ねられていますが、データラベルは逆です。私は開発版devtools::install_github("hadley/ggplot2")
を使用していたスタックされたバーggplot2のデータラベルとは異なる順序

library(plyr) 
library(ggplot2) 
library(reshape2) 


year <- 2016:1999    
one <- c(5277,4955,4823,4565,4316,4129,3997,3515,3354,3281,2973,2713,2661,2412,2137,1787,1619,1543)    
two <-c(12865,12591,12011,11786,11429,10944,9773,9860,9325,8824,8508,8167,7289,6657,5866,5274,4819,4247)     


s <- data.frame(year , one , two) 

dat <- melt(
    s , 
    id.vars = "year") 

dat <- ddply( 
    dat , 
    .(year), 
    transform, pos = cumsum(value) - (0.5 * value) 
    ) 

ggplot() + 
geom_bar(
    aes(y = value, x = year, fill = variable), 
    data = dat , 
    stat="identity" 
    ) + 
geom_text(
    data= dat , 
    aes(x = year, y = pos, label = value) , 
    size=2.5 
    ) 

enter image description here

+1

私はggplot2 v2.1.0を持っており、私の場合はすべてが正常に見えます。 – Christoph

+0

'pos = rev(cumsum(value) - (0.5 * value))'のように、常に逆にすることができます。 – joran

+0

@Christoph - 私はggplot2 v2.1.0を使ってそれを実行し、私が探していたものを手に入れました。これは、開発用バージョンdevtools :: install_github( "hadley/ggplot2")を使用する際に問題となります。ありがとう – MatthewR

答えて

2

これは、新しいバージョンのコードは、以下の新しいバージョンで動作積み重ね棒でデータラベルを配置する改良された方法を持っていることが判明しました。コメントに記載されているように、質問のコードは現在cranのバージョンで動作します。

library(plyr) 
library(ggplot2) 
library(reshape2) 


year <- 2016:1999    
one <- c(5277,4955,4823,4565,4316,4129,3997,3515,3354,3281,2973,2713,2661,2412,2137,1787,1619,1543)    
two <-c(12865,12591,12011,11786,11429,10944,9773,9860,9325,8824,8508,8167,7289,6657,5866,5274,4819,4247)     


s <- data.frame(year , one , two) 

dat <- melt(
    s , 
    id.vars = "year") 

ggplot(dat, aes(factor(year), y = value , fill = factor(variable))) + 
    geom_bar(stat="identity") + 
    geom_text(aes(label = value), position = position_stack(vjust = 0.5)) 
関連する問題