15

我想用ggplot绘制数值向量中值的频率。Withplot()非常简单,但我无法使用ggplot得到相同的结果。

library(ggplot2)    
dice_results <- c(1,3,2,4,5,6,5,3,2,1,6,2,6,5,6,4)    
hist(dice_results)

在此处输入图像描述

ggplot(dice_results) + geom_bar()
# Error: ggplot2 doesn't know how to deal with data of class numeric

我应该创建一个数据框ggplot()来绘制我的矢量吗?

4

3 回答 3

28

试试下面的代码

library(ggplot2)    
dice_results <- c(1,3,2,4,5,6,5,3,2,1,6,2,6,5,6,4,1,3,2,4,6,4,1,6,3,2,4,3,4,5,6,7,1)
ggplot() + aes(dice_results)+ geom_histogram(binwidth=1, colour="black", fill="white")
于 2015-05-11T03:09:59.317 回答
8

请查看帮助页面?geom_histogram。从第一个示例中,您可能会发现这是可行的。

qplot(as.factor(dice_results), geom="histogram")

还看?ggplot。你会发现数据必须是data.frame

于 2013-09-26T11:17:46.287 回答
7

您收到错误的原因是错误的参数名称。如果您没有明确提供参数名称,则使用顺序规则 - dataarg 用于输入向量。

要更正它 - 明确使用 arg 名称:

ggplot(mapping = aes(dice_results)) + geom_bar()

您可以在geom_没有显式命名mapping参数的情况下在函数家族中使用它,因为mapping它是第一个参数,这与ggplot函数情况下data的第一个函数参数不同。

ggplot() + geom_bar(aes(dice_results))

使用geom_histogram而不是geom_bar直方图:

ggplot() + geom_histogram(aes(dice_results))

不要忘记使用 bins = 5 覆盖不适合当前情况的默认 30:

ggplot() + geom_histogram(aes(dice_results), bins = 5)

qplot(dice_results, bins = 5) # `qplot` analog for short

要重现基本hist绘图逻辑,请使用中断参数来强制整数(自然)数字用于中断值:

qplot(dice_results, breaks = 1:6)
于 2019-06-04T14:54:51.950 回答