为什么geom_bar不能分割分类变量?

问题描述 投票:-1回答:1

对R编程非常陌生,想创建一个条形图,然而我的分类x变量仍然是分组的,我得到的是一个单一的条形图,没有任何有用的信息。一个子样本如下。

     New Name Tot Pl L Ld P Min
 1:        1   376.62     5.91
 2:        4   689.07     7.26
 3:        5   202.14     4.67
 4:        6   516.28     6.01
 5:        7   698.02     7.41
 6:        8   180.50     3.69
 7:        9   163.12     4.24
 8:       10   176.66     4.59
 9:       11   665.34     7.97
10:        2   584.28     6.18
11:        3   155.67     4.04
12:        1   137.28     3.65
13:        4   181.87     4.84
14:        5   152.95     4.07
15:        6   150.07     3.99
16:        7   156.41     4.16
17:        8   108.19     2.88
18:        9   162.76     4.33
19:       10   175.88     4.68
20:       11   160.88     4.28
21:        2   148.53     3.95
22:        3   155.28     4.13
23:        1    62.84    10.49
24:        4   145.73    10.85
25:        5    12.00     8.08
26:        6    68.25     8.92
27:        7   143.88    11.83
28:        8     0.12     0.56
29:        9     0.22     1.04
30:       10     0.39     1.80
31:       11   162.22    12.08
32:        2   115.77     8.62
33:        3     0.11     0.51

我使用的代码是

ggplot(ngames, aes(x= 'New Name', y= 'Ld P Min')) + geom_bar(stat = "summary")

这给了我这个错误的图

曲线图.

我已经能够使用iris中的库存数据创建一个我正在寻找的示例图,但它似乎无法与我的数据一起工作,尽管所有的数据格式与iris中的数据格式相同。预期图表的例子. 该图的代码是

ggplot(iris, aes(x = Species, y = Sepal.Length)) +
  geom_bar(stat = "identity")

谢谢你的帮助。

r ggplot2 geom-bar
1个回答
1
投票

假设你的data.frame是这样的(名字有空格是个噩梦)。

structure(list(`New Name` = structure(c(1L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, 2L, 3L, 1L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 2L, 
3L, 1L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 2L, 3L), .Label = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"), class = "factor"), 
    `Tot Pl L` = c(376.62, 689.07, 202.14, 516.28, 698.02, 180.5, 
    163.12, 176.66, 665.34, 584.28, 155.67, 137.28, 181.87, 152.95, 
    150.07, 156.41, 108.19, 162.76, 175.88, 160.88, 148.53, 155.28, 
    62.84, 145.73, 12, 68.25, 143.88, 0.12, 0.22, 0.39, 162.22, 
    115.77, 0.11), `Ld P Min` = c(5.91, 7.26, 4.67, 6.01, 7.41, 
    3.69, 4.24, 4.59, 7.97, 6.18, 4.04, 3.65, 4.84, 4.07, 3.99, 
    4.16, 2.88, 4.33, 4.68, 4.28, 3.95, 4.13, 10.49, 10.85, 8.08, 
    8.92, 11.83, 0.56, 1.04, 1.8, 12.08, 8.62, 0.51)), row.names = c(NA, 
33L), class = "data.frame")

最好把 "新名称 "转换为因子

df[["New Name"]] = factor(df[["New Name"]])

然后,你就可以把你的变量放在后面的刻度线里,就像 variable :

ggplot(df,aes(x=`New Name`,y=`Ld P Min`)) + stat_summary(fun="mean",geom="bar")

enter image description here


1
投票

我不确定这就是全部,因为没有可复制的例子,但我马上看到的是。

1) ggplot不需要将变量名用引号表示。如果你的变量名里有空格,就用勾号代替。另外,如果你指定了你要定义哪些参数,那就更好了。所以把你的第一行改为

ggplot(games, aes(x=`Player Name`, y=`Player Load Per Minute`));

2)正如上面的评论中提到的,你的 geom_bar 语句使用了不需要的参数。你得到的错误是 "ggplot不知道什么是 stat = "summary"fun.y = 'mean' 的手段。" 我建议,不要用YouTube视频作为你的指导,而是用 GGplot参考.

© www.soinside.com 2019 - 2024. All rights reserved.