【问题标题】:stacked area graph in ggplot2 returned as stacked linesggplot2 中的堆积面积图以堆积线形式返回
【发布时间】:2017-08-01 09:44:54
【问题描述】:

我想使用堆积面积按国家/地区绘制(使用 ggplot)捕获数据。然而,我在创建堆积面积图时遇到了问题;出于某种原因,它返回堆叠行:

    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

【问题讨论】:

  • 您能提供一个工作示例吗?尝试发布您的部分 data.fame 或自己模拟一些数据。更多数据分享技巧可以found here

标签: r ggplot2 charts stacked-area-chart


【解决方案1】:

您的代码运行良好,我刚刚将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()

【讨论】:

    【解决方案2】:

    @Malvina_a 的数据集没有出现这个问题。 但是,如果我使用来自 ggplot2 的钻石数据集:

    • y1 作为数字“剪切”
    • x 作为数字“颜色”
    • 国家作为字符“清晰度”

    那么它确实发生了。

    所以,我选取了 diamonds 数据集的一个较小子集(大约 22 行的子集?),它可以正确填写。

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

    【讨论】:

    • 谢谢,当我使用 library(plyr) 按国家/地区汇总捕获量时,我确实设法解决了这个问题。我仍然不知道为什么 ggplot 不喜欢完整的数据集。
    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 2016-03-18
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多