2017-08-01 177 views
0

我想绘制(使用ggplot)按国家/地区每年使用堆积面积捕获数据。但是,我在创建堆积面积图时遇到了问题;由于某种原因,它返回堆叠线:ggplot2中的堆叠面积图返回为堆积线

Med=read.csv("Med1950-2014.csv", header=T) 
    y=as.numeric(Med$catch) 
    x=as.numeric(Med$year) 
    country=as.character(Med$fishing_entity) 
    Medc<- data.frame(x,y1,country) 
    ggplot(Medc,aes(x=x,y=y1))+ geom_area(aes(colour=country,fill=country), position = 'stack') 

我也试过这样:

gg <- ggplot(Medc, aes(x=as.numeric(as.character(x)), y=y1)) 
    gg <- gg + geom_area(aes(colour=country, fill=country)) 
    gg <- gg + scale_x_discrete(labels=levels(highc$x)) 
    gg 

enter image description here

+0

你能提供一个工作的例子吗?尝试张贴您的data.fame的一部分或自己模拟一些数据。有关如何共享数据的更多提示可以[在此处找到](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 –

回答

0

您的代码工作得很好,我刚刚搬进了fill选项从geom_area()ggplot()和下面的代码将返回彩色区域:

library(ggplot2) 
data <- data.frame(x = c(1960,1968,1970,1960,1966,1970), y = c(0.0004777018,0.0909000000,0.1077696000, 0.8941553688,0.0028121347 ,0.0033915022), country = c("Turkey", "Turkey","Turkey","Croatia","Croatia","Croatia")) 

ggplot(data, aes(x=as.numeric(as.character(x)), y=y,fill=country)) + geom_area() 

enter image description here

0

我没有得到@ Malvina_a的数据集这个问题。 不过,如果我使用了钻石的数据从GGPLOT2与我的设置:

  • Y1为数字“一刀切”
  • X为数字“颜色”
  • 国家作为一个字符“清晰度”

然后确实发生。所以,我花了钻石数据集的一个较小的子集(约22行的子集?),它正确填写。

这并不能完全帮助您解决问题,但希望可以帮助您了解问题所在。

+0

谢谢,当我用图书馆(plyr)按国家总结渔获量时,的确设法解决了这个问题。不过我不知道为什么ggplot不喜欢整个数据集。 –