如何设置条形图的x轴

时间:2016-07-12 13:33:05

标签: r plot

这已经多次受到质疑,例如X axis in Barplot in R

然而没有人帮助我解决我的问题

dt<- structure(c(79L, 54L, 37L, 41L, 42L, 121L, 134L, 169L, 23L, 19L, 
22L, 19L, 25L), .Names = c("Experi_1", "Experi_2", "Experi_3", 
"Experi_4", "Experi_5", "Experi_6", "Experi_7", "Experi_8", "Experi_9", 
"Experi_10", "Experi_11", "Experi_12", "Experi_13"))

我像这样绘制我的数据

mydt<- barplot(dt)

如果我这样做,它会覆盖x轴的两倍

axis(side=1,at=mydt[1+c(1,13)],labels=c("Experi1","Experi13"))

自动设置少量x轴标签。我想手动完成,例如只提到x轴标签和结束的开头。在这种情况下,实验1和实验13.我试图理解?轴和特别标签,但我无法将其设置为服装作为轴标签,因为我想要。

4 个答案:

答案 0 :(得分:9)

names.arg功能的参数barplot可让您按照自己的方式自定义标签。您只需要为参数指定一个名称向量,其长度与条数相同:

例如,只放置第一个和最后一个:

barplot(dt, names.arg=c("Experi_1", rep("", 11), "Experi_13"))

enter image description here

另一个例子,放5个标签:

barplot(dt, names.arg=c(names(dt)[1:5], rep("", 2), names(dt)[8:13]))

enter image description here

修改

如果你想按顺序放置标签(例子每5个),你可以这样做:

lab <- rep("", length(dt))
lab[seq(1, length(dt), by=5)] <-names(dt)[seq(1, length(dt), by=5)]
barplot(dt, names.arg=lab)

enter image description here

答案 1 :(得分:2)

我认为这应该会给你你想要的东西:

mydt<- barplot(dt,xaxt='n')
axis(side=1,at=mydt[c(1,13)],labels=c("Experi1","Experi13"))

您需要使用xaxt='n'来取消x轴,并从1+参数中删除at

答案 2 :(得分:1)

我有60年时间序列的数据,想每5年使用names.arg对其进行排序。我只是添加了一个列,这给了我想在x轴上绘制的年份。

例如

df$YearX<- c("1990", "","","","", "1995".....) 这会在我的数据框中添加一列,并在其上绘制正确的年份和间隔。

然后简单地使用我的barplot中的names.arg=df$YearX将其绘制为我的x轴

出于某种原因,这对我来说要快得多。这些名字每5年出现一次。

希望这对某人有帮助。

答案 3 :(得分:1)

实际上,如果有很多条,barplot()会自动决定要打印哪些条,这不一定是我们的选择。我解决了用NA而不是“”填充标签的问题。那是:

    lab <- rep(NA, length(dt))
    lab[seq(1, length(dt), by=5)] <-names(dt)[seq(1, length(dt), by=5)]
    barplot(dt, names.arg=lab)