【问题标题】:Bar plot in R: ggplot arguments imply differing number of rows:R中的条形图:ggplot参数暗示不同的行数:
【发布时间】:2015-12-27 07:36:14
【问题描述】:

我有一个如下所示的列表对象->

> myaggregate
   input$AgeAndGender   input$CTR
1          Female_<18 0.030041698
2        Female_18-24 0.010918938
3        Female_25-34 0.009839806
4        Female_35-44 0.010193773
5        Female_45-54 0.009996056
6        Female_55-64 0.020024678
7          Female_65+ 0.030060728
8            Male_<18 0.028356698
9          Male_18-24 0.011031902
10         Male_25-34 0.010218562
11         Male_35-44 0.010168911
12         Male_45-54 0.010021256
13         Male_55-64 0.020191223
14           Male_65+ 0.029717747

我试图为 AgeAndGender(X 轴)中的每个值绘制一个表示 CTR 水平(Y 轴)的条形图。 但是当我尝试一个简单的情节时,我遇到了以下问题->

> ggplot(data= myaggregate,aes(x=input$AgeAndGender,y=input$CTR))+geom_bar()
Error in data.frame(x = c("Male_35-44", "Female_65+", "Male_25-34", "Female_45-54",  : 
  arguments imply differing number of rows: 3378934, 14

我确定我错过了一些非常基本的东西。任何帮助表示赞赏!

【问题讨论】:

  • 您有$ 登录您的列名。在aes() 内部,您没有从myaggregate data.frame 分配列...
  • 我同意您的列名可能会导致问题,并结合 ggplot 的非标准评估。尽量避免包含重要符号的列名,例如$

标签: r ggplot2


【解决方案1】:

如果您只是想绘制值,那么您需要stat="identity",如下例所示:

library(ggplot2)

AgeAndGender <- c("f1","f2","f3")
CTR <- c(.1,.15,.12)
myaggregate <- data.frame(AgeAndGender, CTR)

ggplot(data= myaggregate,aes(x=AgeAndGender, y=CTR))  + geom_bar(stat = "identity")

结果如下:

看到您关于您的数据在列表中的评论让我很担心。尝试将myaggregate 设为数据框。

【讨论】:

  • 谢谢!我尝试通过将名称更改为没有 $ 并将其引用到 myaggregate 并且它按照 zx874 的建议工作。我将您的代码用于图表:)
【解决方案2】:

我能够用你正在使用的东西进行绘图,但这是一个相当奇怪的结构。数据框的名称中通常没有美元符号,因为$ 是 R 中的一个中缀函数。我用read.table 读取数据,美元符号被转换为句点。我将列名放回原处:

names(myaggregate) <- c('input$AgeAndGender',   'input$CTR')

然后你可以得到一个相当混乱的条形图:

ggplot(data= myaggregate,aes(x=`input$AgeAndGender`,y=`input$CTR`))+ geom_bar(stat = "identity")

当您刚刚输入代码时,未加引号的名称会被解释为 x 是 input 数据框中的“AgeAndGender”-clumn。如果你只使用普通引号而不是反引号,你就不会成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2019-02-13
    • 2015-12-08
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多