这已经多次受到质疑,例如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.我试图理解?轴和特别标签,但我无法将其设置为服装作为轴标签,因为我想要。
答案 0 :(得分:9)
names.arg
功能的参数barplot
可让您按照自己的方式自定义标签。您只需要为参数指定一个名称向量,其长度与条数相同:
例如,只放置第一个和最后一个:
barplot(dt, names.arg=c("Experi_1", rep("", 11), "Experi_13"))
另一个例子,放5个标签:
barplot(dt, names.arg=c(names(dt)[1:5], rep("", 2), names(dt)[8:13]))
修改强>
如果你想按顺序放置标签(例子每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)
答案 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)