2015-08-17 201 views
3

我已经看到关于x轴标记顺序的几个问题,但仍然没有一个可以解决我的问题。 我试图做一个密度图,显示的人采用百分制中每个分布分数给出这样r ggplot x轴刻度线顺序

library(dplyr); library(ggplot2); library(ggtheme) 
ggplot(KA,aes(x=percentile,group=kscore,color=kscore))+ 
    xlab('Percentil')+ ylab('Frecuencia')+ theme_tufte()+ ggtitle("Prospectos")+ 
    scale_color_brewer(palette = "Greens")+geom_density(size=3) 

但x轴标记被下令像1,10,100,11,12,.., 2,20,21,...,99,而不是仅仅1,2,3,...,100这是我想要的输出 enter image description here

我担心这会影响整个情节不仅仅是标签

+3

你的x变量是一个因素。你可能希望它是数字。 'KA $ percentile = as.numeric(as.character(KA $百分比))''。 – Gregor

+1

添加一个'dput(head(KA))'将有助于确认这个 – jeremycg

+1

...但是当您的排序明显是按字母顺序排列的“1,10,100,11,12,...,2”时,几乎不需要确认。 – Gregor

回答

1

我将我的评论转到答案,以便可以标记为已解决:

你的x变量(几乎可以肯定)是一个因素。你可能希望它是数字。

KA$percentile = as.numeric(as.character(KA$percentile)) 

当你看到奇怪的东西时,最好检查一下你的数据。运行str(KA)是查看内容的好方法。如果你只想看课,sapply(KA, class)是一个很好的总结。

而且这是一个普遍的[R怪癖,如果你从要素转换为数字,以人格的方式去否则你可能只用一级的数字结束了:

year_fac = factor(1998:2002) 
as.numeric(year_fac) # not so good 
# [1] 1 2 3 4 5 
as.numeric(as.character(year_fac)) # what you want 
# [1] 1998 1999 2000 2001 2002 
+0

再次感谢! –