【问题标题】:a barplot with two different variables on RR 上有两个不同变量的条形图
【发布时间】:2014-05-17 16:48:29
【问题描述】:

想在同一个条形图上绘制以下数据。它是一个长度频率条形图,显示人口中男性和女性的长度等级:

我是新手,我不知道如何将我的数据放在这里,但这里有一个例子:

Lengthclass Both    Males   Females
60  7   5   2
70  10  5   5
80  11  6   5
90  4   2   2
100 3   3   0
110 3   0   3
120 1   1   0
130 0   0   0
140 1   0   1
150 2   0   2

如果我使用此代码: {barplot()} 它并没有在同一个图上给我所有三个变量。

我需要一个看起来像这样但在 R 上的图表。

谢谢:)

【问题讨论】:

  • 提示:只需粘贴dput(yourdata)(或dput(head(yourdata)),如果您有大量数据)的输出来构建一个可重复的示例,并准确地指出@987654326 是什么@你使用的命令。这让我们所有人都能更轻松地为您提供帮助。

标签: r graph bar-chart


【解决方案1】:
classes <- levels(cut(60:100, breaks = c(60,70,80,90,100),
                      right =FALSE))

my.df <- data.frame(lengthclass = classes,
                     both = c(7,10,11,4),
                     male = c(5,5,6,2),
                     female = c(2,5,5,2))

barplot(t(as.matrix(my.df[, 2:4])), 
        beside = TRUE,
        names.arg = my.df$lengthclass,
        legend.text = TRUE,
        ylim = c(0,12),
        ylab = "number of individuals",
        xlab = "Length class (cm)")

【讨论】:

    【解决方案2】:

    您的条形图被称为“分组条形图”(与“堆叠条形图”相反)。

    matrix 中安排您的数据,并在您对barplot() 的调用中使用beside=TRUE。这是一个使用内置数据集的示例:

    > VADeaths
          Rural Male Rural Female Urban Male Urban Female
    50-54       11.7          8.7       15.4          8.4
    55-59       18.1         11.7       24.3         13.6
    60-64       26.9         20.3       37.0         19.3
    65-69       41.0         30.9       54.6         35.1
    70-74       66.0         54.3       71.1         50.0
    > barplot(VADeaths,beside=TRUE)
    

    【讨论】:

    • 传递data.frame时,会发出错误'height' must be a vector or a matrix。在这种情况下,解决方案是:as.matrix(VADeaths)
    猜你喜欢
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多