在R中创建风筝图

时间:2014-03-05 14:46:25

标签: r

我一直试图创建一个风筝图表失败。我想展示在每个深度水平(820,1208,1750和2209米)观察到的每种鱼类(a-f)的总数。我在kiteChart中尝试了plotrix,但无法确定如何将数据设置为正确的格式以使其正常工作。 我曾尝试使用以下内容在论坛中关注其他帖子,但它不起作用:

X <- read.table(textConnection("Species Total Depth
A 6 820 
A 15 1208 
A 77 1750 
A 41 2209 
B 11 820 
B 17 1208 
B 17 1750 
B 1 2209 
C 0 820 
C 13 1208 
C 5 1750 
C 4 2209 
D 32 820 
D 0 1208 
D 0 1750 
D 0 2209 
E 0 820 
E 11 1208 
E 0 1750 
E 0 2209 
F 0 820 
F 0 1208 
F 0 1750 
F 6 2209"),header=TRUE) 
library(reshape) 
X2 <- recast(X,Depth~Species,id.var=1:2) 
X3 <- as.matrix(X2[,-1]) 
rownames(X3) <- X2$Depth 
colnames(X3) <- names(X2)[-1] 
library(plotrix) 
kiteChart(t(X3),xlab="Depth",ylab="Species") 

#or 
 x2<-matrix(X$Total,ncol=3) 
rownames(x2)<-unique(X$Distance) 
colnames(x2)<-unique(X$Species) 
kiteChart(t(X3),xlab="Distance",ylab="Species") 

有人可以提出解决方案吗? 非常感谢

更新:我已经重新安排了我的数据,现在可以生成以下图表。

X <- read.table(textConnection("Species Depth Total 
A 820 6 
A 1208 15 
A 1750 77 
A 2209 41 
B 820 11 
B 1208 17 
B 1750 17 
B 2209 1 
C 820 0 
C 1208 13 
C 1750 5 
C 2209 4 
D 820 32 
D 1208 0 
D 1750 0 
D 2209 0 
E 820  0
E 1208 11 
E 1750 0 
E 2209 0 
F 820 0 
F 1208 0 
F 1750 0 
F 2209 6"),header=TRUE) 
library(reshape) 
X2 <- recast(X,Depth~Species,id.var=1:2) 
X3 <- as.matrix(X2[,-1]) 
rownames(X3) <- X2$Depth 
colnames(X3) <- names(X2)[-1] 
library(plotrix) 
kiteChart(t(X3),xlab="Depth",ylab="Species") 

enter image description here

2 个答案:

答案 0 :(得分:2)

鉴于kiteChart中的'时间轴'似乎是离散的而不是连续的(参见上面评论中的小例子),我想到了另一种可视化数据的方法。如果是一个区域图,它将为您提供连续的深度。

library(ggplot2)
ggplot(data = X, aes(x = Depth, y  = Total, fill = Species)) +
  geom_area(position = "stack") +
  coord_flip() +
  scale_x_reverse()

enter image description here

答案 1 :(得分:1)

也许这有效:

library(plotrix)
x2<-matrix(X$Total,ncol=4,byrow=TRUE) 
colnames(x2)<-unique(X$Depth) 
rownames(x2)<-unique(X$Species)
kiteChart(x2,xlab="Depth",ylab="Species")

它在我的安装上生成以下图表:

enter image description here