使用R中的qplot生成矢量条形图

时间:2014-02-09 00:42:21

标签: r ggplot2

我的载体如下:

x = c(1:10)
y = c(1, 8, 87, 43, 67, 22, 99, 14, 75, 56)

我想生成一个条形图,其中x轴标记为1-10,y轴是上面y向量中每个值的高度。我尝试了几个与此类似的命令:

qplot(x, y, geom= "bar")

这会导致错误

Mapping a variable to y and also using stat="bin".
With stat="bin", it will attempt to set the y value to the count of cases in each group.
This can result in unexpected behavior and will not be allowed in a future version of ggplot2.
If you want y to represent counts of cases, use stat="bin" and don't map a variable to y.
If you want y to represent values in the data, use stat="identity".

所以,我尝试了这条消息中的两条建议。第一:

qplot(x, stat="bin", geom= "bar")

但是这导致了一个图表,其中所有10个柱子的高度为1。第二:

qplot(x, stat="identity", geom= "bar")

但这会导致错误:as.environment(where)中的错误:'where'缺失

作为一个附带问题,我想让每个酒吧变得不同(或至少是随机颜色)。这有点直截了当吗?

3 个答案:

答案 0 :(得分:5)

使用qplot的任何理由? ggplot提供了更大的灵活性,虽然在这个简单的情况下不需要。

x = c(1:10)
y = c(1, 8, 87, 43, 67, 22, 99, 14, 75, 56)
df <- data.frame(x,y)
library(ggplot2)
ggplot(df, aes(x, y, fill = as.factor(x))) + geom_bar(stat = "identity")

enter image description here

答案 1 :(得分:4)

怎么样:

qplot(x, y, geom="bar", stat="identity")

geom="bar"很棘手,因为默认情况下它想要填充内容。如果您提供y值,则必须告诉它不要对数据应用统计信息。这就是stat="identity"的作用。身份基本上意味着“不做任何事情”。如果你这样做,那么你必须指定一个y值(这是你在最后一个例子中缺少的)。要添加颜色,您可以:

qplot(x, y, geom="bar", stat="identity", fill=as.factor(x))

答案 2 :(得分:1)

不建议将qplotstat参数一起使用。要使用现有数量作为条形长度,请使用weight参数:

qplot(x, weight = y, geom = "bar")

这会给你通常的&#34;计数&#34; y轴标签。

但是,此类数据的最明确方法是使用col geom而不是bar,因为col期望y参数表示长度为qplot(x, y, geom = "col")条/列:

<span class="label-link-text">[help]</span>

这将使用您的变量名称为您提供y轴标签,而不是&#34; count&#34;。