2013-05-10 76 views
0

我在ggplot2中有问题。如果我重新排列因子水平并绘制文本标签值(在这种情况下是频率),则文本标签值仍保留在旧的级别中。 有什么问题? enter image description hereggplot2中的重排因子水平不适合y geom_text注释

29和71是频率,但我想要适合29绿线和71红线。如果你扭转阴谋,数字很适合! Thaaanks 下面图表的代码:

with(data4, 
    ggplot(subset(data4,ASSAGGIATORE=="Manera"), 
      aes(ASSAGGIATORE,Freq,fill=SCELTA)) + 
     geom_bar() + 
     geom_text(aes(label=round(Freq)), 
       position="stack") + 
     scale_size(range=c(5,6)) +     
     geom_hline(aes(yintercept=mediana), 
        colour="navy", 
        linetype="dotted") + 
     scale_fill_manual(values=c("chartreuse3","brown1"), 
         name="RISPOSTE", 
         labels=c("% Risposte Corrette","% Risposte Sbagliate")) + 
     geom_text(aes(1, 
        mediana, 
        label="Assaggiatore Medio", 
        vjust=0), 
       size=4, 
       colour="navy") + 
     scale_y_continuous('% Totale Assaggi')) 

这里DATA4

SCELTA ASSAGGIATORE Freq  Mediana 
no  Manera   28.57143 63.33333 
si  Manera   71.42857 63.33333 

的例子,我觉得我得到了解决:

ggplot(subset(data4,ASSAGGIATORE=="Manera"), 
    aes(ASSAGGIATORE,Freq,fill=SCELTA),label=Freq)+geom_bar()+ 
     stat_bin(geom="text", aes(position='stack', label=Freq,)) 
+0

我们可以访问'data4'吗? – Arun 2013-05-10 14:11:08

+2

当使用'ggplot'时没有任何理由使用'with',因为这里面有一个隐含的'with'。我建议摆脱一堆格式和额外的geoms,并从最基本的开始重现问题的情节。最后,请提供数据,以便我们重现您的问题。 – Justin 2013-05-10 14:21:07

+0

谢谢贾斯汀。我也尝试过另一种解决方案! – Spigonico 2013-05-10 14:33:48

回答

1
ggplot(subset(data4,ASSAGGIATORE=="Manera"), 
    aes(ASSAGGIATORE,Freq,fill=SCELTA),label=Freq)+geom_bar()+ 
    stat_bin(geom="text", aes(position='stack', label=Freq,)) 

enter image description here