在r

时间:2015-12-10 16:55:26

标签: r graph

除了xlab之外,我想在3到3个条形图中添加刻度线。我为单个图表尝试了this解决方案,但不知怎的,我无法复制它。我们的想法是用d来标记每个条形,从-3到+3,单位增加。每个图中的第一个条形代表-3的值。我尝试使用下面的模拟数据来演示我的问题。有任何想法吗?

# Data generation

# Populating a matrix
matrix(rnorm(63, 1:9), nrow=7, byrow=TRUE)

# Labelling the matrix
colnames(mat.s) <- c("Hs", "Sex", "Es", "Bo", "R", "W", "S", "Pri", "Abo")

# Tick mark indicator
d <- seq(-3,3,1)

# Plotting estimates
par(mfrow=c(3,3), mar = c(4,3,3,1))

for(i in 1:9) {

# Bar plot
barplot(mat.s[,i],

# X-label
xlab = colnames(mat.s)[i])

}

3 个答案:

答案 0 :(得分:4)

在循环中的axis.lty函数中指定names.argmgpbarplot,您就可以了:

#I haven't changed anything else before the for-loop
#only changes have taken place inside the barplot function below
for(i in 1:9) {
  # Bar plot
  barplot(mat.s[,i], xlab = colnames(mat.s)[i], 
          names.arg= as.character(-3:3), axis.lty=1, mgp=c(3,1,0.2))
}

输出:

enter image description here

更详细一点:

  • names.arg将添加标签
  • axis.lty=1将添加x轴
  • mgp是一个长度为3的向量,它按此顺序控制标题,标签和轴线的边距。我只需要将其中的第三个元素更改为0.2,以便轴看起来很好(检查?par)。

答案 1 :(得分:3)

LyzandeR的一个很好的答案是在为对象分配axis()之后添加barplot()

for(i in 1:9) {

  # Bar plot
  temp <- barplot(mat.s[,i],

  # X-label
  xlab = colnames(mat.s)[i])
  axis(1,at=temp,labels=-3:3)
}

enter image description here

答案 2 :(得分:2)

这是ggplot版本:

library(dplyr)
library(reshape2)
library(ggplot2)

# Add x-labels and reshape to long format then plot
ggplot(mat.s %>% mutate(x=-3:3) %>% melt(id.var="x"), 
       aes(x=x, y=value)) +
  geom_bar(stat="identity", fill=hcl(195,100,65)) +
  facet_wrap(~variable) +
  labs(x="", y="") +
  scale_x_continuous(breaks=-3:3)  

enter image description here