R:ggplot参数中的条形图表示不同的行数:

时间:2015-09-29 17:42:26

标签: r ggplot2

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

> 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轴)。 当我尝试一个简单的情节时,我遇到了以下问题 - &gt;

> 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

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

2 个答案:

答案 0 :(得分:3)

如果您只是想绘制值,那么您需要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")

结果如下:

enter image description here

查看您对列表中数据的评论让我感到担忧。尝试将myaggregate设为数据帧。

答案 1 :(得分:0)

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

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

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

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

enter image description here

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

enter image description here