条形图仅显示x轴上的特定名称(日期)

时间:2014-11-19 16:22:48

标签: r

我在使用R时非常新,我在条形图中遇到x轴问题。

一些例子

 t<-seq(as.Date("2014-04-09"), as.Date("2014-10-09"), by="days")
 c<-sample(0:100,184, rep=TRUE)
 x<-data.frame(t,c)
 rownames(x)<-x[,c(1)]
 x<-subset(x,select=c(2))
 par(las=2)
 barplot(t(x))

如您所见,x轴上的日期不是很好。我想只显示一些日期,因为它是真实的,las = 1但是方向为las = 2。我试图从日期创建一个新对象来获取名称,但我无法这样做。也许在条形图中有一种方法或为名字制作一个新对象。

感谢您的帮助

解决方案1:

plot(t,x$c,type="h")

编辑:plot()解决方案正常。但是,如果我需要像新示例中那样堆叠条形码呢?

 t<-seq(as.Date("2014-04-09"), as.Date("2014-10-09"), by="days")
 c<-sample(0:100,184, rep=TRUE)
 f<-sample(0:100,184, rep=TRUE)
 x<-data.frame(t,c,f)
 rownames(x)<-x[,c(1)]
 x<-subset(x,select=c(2,3))
 par(las=2)
 barplot(t(x))

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

这样做你想要的吗?

plot(t,x$c,type="h")

plot

(我认为你不会真的希望将时间序列显示为条形图,这只是一个例子。对于时间序列,你通常会这样做type="o"。)

编辑:要获得堆积条形图,您可以执行以下操作 - 首先从x$c绘制条形图的下半部分,通过ylim保留足够的垂直空间,使用lwd=3更粗的线条,这样我们就可以看到彩色条纹之间的区别:

plot(t,x$c,type="h",lwd=3,ylim=c(0,max(rowSums(x))))

然后使用lines()函数添加条形图的上半部分。为此,您需要指定x值的向量。由于每个栏都是垂直的,我们只使用两份t。然后,您需要垂直线的下端和上端的y值向量。下端为x$c,上端为x$c+x$f。我们需要用NA s散布x和y向量,这样垂直线不会被对角线连接在一起。我发现使用rbind()创建三行矩阵最简单,其中最后一行是NA。 (下面,为了清楚起见,我使用as.vector() - 不需要它; lines()将矩阵转换为矢量本身)。最后,我们指定线条粗细和颜色:

lines(as.vector(rbind(t,t,NA)),
  as.vector(rbind(x$c,x$c+x$f,NA)),
  lwd=3,col="gray")

barplot stacked

建议:给出与R函数冲突的数据结构名称并不是一个好主意。例如,你有一个日期t的向量,但是有一个函数t()(它转换了矩阵 - 你实际上使用了那个矩阵)。您还有c,它与函数c()冲突。这会让您和想要在这里帮助您的人感到困惑。在time-honored fashion中调用您的数据结构foobarbaz