0

我的数据看起来像:

0.2 0.8 val1
0.3 0.7 val1
0.9 0.1 val1
0.22 0.78 val2
0.30 0.70 val3
0.00 1.00 val3

我想要的是一个条形图,其中每一行都绘制为自己的条形图,但在 x 轴的名称中,我不想要“val1”3 次,我只想要一次并集中(相对于val1 吧)。我用谷歌搜索了很多,但不知道老实说用谷歌搜索什么。

4

4 回答 4

1
barplot(t(as.matrix(dat[1:2])), 
        names.arg=c("",as.character(dat$V3[2]),"", as.character(dat$V3[4:6])))

在此处输入图像描述

于 2013-08-26T23:02:20.567 回答
0

另一种ggplot选择:

df <- read.table(text = "
0.2 0.8 val1
0.3 0.7 val1
0.9 0.1 val1
0.22 0.78 val2
0.30 0.70 val3
0.00 1.00 val3")

names(df) <- c("y1", "y2", "x1")
df$x2 <- 1:nrow(df)
df2 <- melt(df, id.vars = c("x1", "x2"))

xlabs <- ddply(.data = df, .variables = .(x1), summarize, xval = median(x2))
labs$x1 <- labs$x1

ggplot(data = df2, aes(x = x2, y = value, fill = variable)) +
   geom_bar(stat = "identity") +
   scale_x_continuous(breaks = labs$xval, labels = labs$x1) +
   xlab("")
于 2013-08-27T01:11:22.023 回答
0
> mydata
  col1 col2 variable
1 0.20 0.80     val1
2 0.30 0.70     val1
3 0.90 0.10     val1
4 0.22 0.78     val2
5 0.30 0.70     val3
6 0.00 1.00     val3

library(ggplot2)
 mm <- ddply(mydata, .(variable), summarise, mecol1 = mean(col1),mecol2=mean(col2))
 ggplot(mm, aes(x = factor(variable), y = mecol1)) + geom_bar(stat = "identity")
 ggplot(mm, aes(x = factor(variable), y = mecol2)) + geom_bar(stat = "identity")

在此处输入图像描述 在此处输入图像描述

于 2013-08-26T22:58:33.183 回答
0

可能是这样的?

dat <- read.table(text="0.2 0.8 val1
0.3 0.7 val1
0.9 0.1 val1
0.22 0.78 val2
0.30 0.70 val3
0.00 1.00 val3",header=FALSE)

bp <- barplot(t(as.matrix(dat[1:2])))
axis(1,at=tapply(bp,dat[,3],mean),labels=unique(dat[,3]))

不过,我不知道您将如何区分哪个标签属于哪个条 - 结果确实与“ 6 个不同的条但 x 轴上有 3 个标签”很混淆。

在此处输入图像描述

为避免分组混淆,您始终可以执行以下操作:

bp <- barplot(t(as.matrix(dat[1:2])))
mapply(
  function(a,b,c) axis(1,at=c(a,b,c),labels=FALSE),
  tapply(bp,dat[,3],tail,1),
  tapply(bp,dat[,3],head,1),
  tapply(bp,dat[,3],mean)
)
axis(1,at=tapply(bp,dat[,3],mean),labels=unique(dat[,3]),lwd=NA)

在此处输入图像描述

于 2013-08-26T23:52:49.430 回答