3

使用此数据框,df

bat.condition bat.group      bat.money
1              safe          2825.882
2              safe          2931.875
1              glsa          6975.882
2              glsa          5407.500
1              studyabroad   3084.706
2              studyabroad   2253.750 
1              jcc           4134.706
2              jcc           5550.625
1              eagg          4578.824
2              eagg          5456.250

我想在 x 轴上绘制一个带有组的条形图,在 y 轴上绘制货币。此外,我希望将条形图按它们发生的条件分开/分解。到目前为止,我已经使用了以下代码,它几乎是理想的。我有按组分解的条形,我想按条件进一步分解它。

qplot(factor(bat.group), data = df, geom = "bar", fill = bat.group, 
      weight = bat.money, position = "dodge")

这会产生这里看到的图像。

在此处输入图像描述

4

3 回答 3

1

您通常可以使用以下interaction功能进行分组:

 qplot(interaction(bat.condition, bat.group), data = df, geom = "bar", fill = bat.group, 
      weight = bat.money, position = "dodge")
于 2012-11-07T23:09:33.163 回答
1

您可以向数据框添加新变量并使用如下方面:

df$factor = factor(df$bat.group)
qplot(as.character(bat.condition), data = df, geom = "bar", fill = bat.group, 
      weight = bat.money, position = "dodge", facets = . ~ factor)

结果

于 2012-11-07T23:29:02.007 回答
0

这是一个解决方案,可以满足我的要求。我使用ggplot了语法而不是qplot. 我曾经用facet_wrapbat.condition 来分隔你的数据。此外,geom_barplot需要该参数stat="identity",否则它将尝试对您的数据进行分类。

# Using ggplot2 version 0.9.2.1
library(ggplot2)

dat = read.table(header=TRUE, 
text="bat.condition bat.group      bat.money
1              safe          2825.882
2              safe          2931.875
1              glsa          6975.882
2              glsa          5407.500
1              studyabroad   3084.706
2              studyabroad   2253.750 
1              jcc           4134.706
2              jcc           5550.625
1              eagg          4578.824
2              eagg          5456.250")


p1 = ggplot(data=dat, aes(x=bat.group, y=bat.money, fill=bat.group)) +
     geom_bar(stat="identity") +
     facet_wrap(~ bat.condition)

ggsave(plot=p1, filename="plot_1.png", height=5, width=8)

在此处输入图像描述

编辑: 使用fill=bat.condition和添加position="dodge"将产生一个像您在评论中链接到的图形。

p2 = ggplot(data=dat, aes(x=bat.group, y=bat.money, fill=factor(bat.condition)))+
     geom_bar(position="dodge")

ggsave(plot=p2, filename="plot_2.png", height=4, width=6)

在此处输入图像描述

于 2012-11-07T23:06:43.873 回答