【问题标题】:How to rearrange string X axis tick labels in ggplot2如何在ggplot2中重新排列字符串X轴刻度标签
【发布时间】:2013-12-13 20:23:28
【问题描述】:

我正在尝试绘制行程长度分布(距离每增加 10 英里,我想找出该垃圾箱中该特定年份的行程百分比)。当我在 ggplot2 中绘制它时,我的 X 轴刻度标签按字母顺序排列,而不是按距离增加的顺序排列。我尝试过使用建议的各种技巧(Change the order of a discrete x scale),但没有得到任何结果。一个链接我的代码在下面,数据集在这里(http://goo.gl/W1jjfL)。

library(ggplot2)
library(reshape2)

nwpt <- subset(nonwork, select=c(Distance, PersonTrips1995, PersonTrips2001, PersonTrips2009))
nwpt <- melt(nwpt, id.vars="Distance") 

ggplot(data=nwpt, aes(x=Distance, y=value, group=variable, colour=variable)) +  scale_x_discrete(name="Distance") + geom_line(size=0.5) + ggtitle("Non Work Person Trips") + ylab("Percent") 

我检查了距离变量是否是一个因素,如下所示:

is.factor(nwpt$Distance) 1 TRUE

但是,我得到的输出不是我想要的。而不是 10 英里以下是第一类,10-14 英里是下一个等等。我得到的情节如下图所示(此处为 PDF:http://goo.gl/V7yvxT)。

感谢任何帮助。 TIA 克里希南

【问题讨论】:

  • 对因子水平重新排序。我认为gdata 包中的reorder.factor() 函数会自动满足您的需求。

标签: r ggplot2 labeling


【解决方案1】:

这是一种方法:

library(ggplot2)
library(reshape2)

nwpt <- subset(nonwork,
               select=c(DID,Distance,PersonTrips1995,PersonTrips2001,PersonTrips2009))
nwpt <- melt(nwpt, id.vars=c("DID","Distance")) 

ggplot(data=nwpt, aes(x=DID, y=value, colour=variable)) + 
  geom_line(size=0.5) + 
  labs(title="Non Work Person Trips", y="Percent") +
  scale_x_discrete(name="Distance", labels=nwpt$Distance) + 
  theme(axis.text.x=element_text(angle=90))

用你的数据集生成这个:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多