我在使用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))
答案 0 :(得分:0)
欢迎使用StackOverflow!
这样做你想要的吗?
plot(t,x$c,type="h")
(我认为你不会真的希望将时间序列显示为条形图,这只是一个例子。对于时间序列,你通常会这样做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")
建议:给出与R函数冲突的数据结构名称并不是一个好主意。例如,你有一个日期t
的向量,但是有一个函数t()
(它转换了矩阵 - 你实际上使用了那个矩阵)。您还有c
,它与函数c()
冲突。这会让您和想要在这里帮助您的人感到困惑。在time-honored fashion中调用您的数据结构foo
,bar
和baz
。