2

我旧帖子的新增内容:

如果我似乎期待有人为我做这项工作,我深表歉意!那绝对不是我的本意。

使用 dput,输出给了我以下信息:

    structure(list(Reported.Behavior = structure(c(3L, 6L, 2L, 1L, 
8L, 7L, 4L, 5L), .Label = c("Alcohol-marijuana", "Depression/Suicidal Ideation", 
"Homophobic Teasing", "Parent Communication", "Parent Support", 
"Peer Victimization", "Racism", "School climate"), class = "factor"), 
    Heterosexual.Mean = c(0.2, 0.45, 0.63, 0.8, 1.79, 0.61, 1.89, 
    3.31), Heterosexual.SD = c(0.66, 0.75, 0.67, 0.97, 0.49, 
    0.67, 0.95, 0.65), Questioning.Mean = c(0.84, 0.95, 1.07, 
    1.36, 1.63, 1.03, 1.79, 2.83), Questioning.SD = c(1.33, 1.18, 
    0.95, 1.51, 0.65, 0.82, 1.13, 0.93), LGB.Mean = c(0.57, 0.56, 
    0.77, 1, 1.72, 0.82, 1.84, 3.14), LGB.SD = c(1.13, 0.9, 0.82, 
    1.16, 0.56, 0.76, 1.07, 0.8), ANOVA.F.Value = c(375.94, 166.54, 
    176.54, 138.82, 49.13, 193.31, 5.63, 231.73), ANOVA.Effect.Size = c(0.05, 
    0.03, 0.03, 0.02, 0.01, 0.03, 0, 0.03)), .Names = c("Reported.Behavior", 
"Heterosexual.Mean", "Heterosexual.SD", "Questioning.Mean", "Questioning.SD", 
"LGB.Mean", "LGB.SD", "ANOVA.F.Value", "ANOVA.Effect.Size"), class = "data.frame", row.names = c(NA, 
-8L))

我尝试过各种 ggplot 命令,如下所示:(我的数据集名称 = lgbtq)

ggplot(All.Means, aes(Mean.Values, Homophobic.Teasing, color = Mean.Values)) + geom_bar()

但是,这仅会生成 Homophobic Teasing Means 的图表。我正在尝试找到一种方法将所有行为方式放在同一个图表上(即并排的条形图,按性别进行颜色编码)

我试图通过生成仅包含一种行为的 csv 文件来操纵数据。例如:

ggplot(data = Peer.Victimization.Means, aes(x = Mean.Values, y = Peer.Victimization, color = Mean.Values)) + geom_bar(color = "black", fill = "red")

然而,哪个有效,我想找到一种方法来利用整个数据集。

我看过提到“融化”功能的帖子,但还没有成功。:/ 任何建议将不胜感激!

这是我第一次使用“R”,所以请知道我是一个初学者。对于课程作业,我正在使用具有以下列标题的数据集:

报告的行为(包括 8 个不同的行为名称) 异性恋平均值(包括每种行为的值) 质疑平均值(包括每种行为的值) LGB 平均值(包括每种行为的值)

我想使用 ggplot2 来绘制这些数据。如果我可以生成具有以下内容的条形图,那将是理想的:

Y 轴:“平均值” X 轴:“报告的行为”,对于每个报告的行为,我希望有 3 个单独的条,并排(异性平均值、质疑平均值和 LGB 平均值)。然后,如果我可以对这些进行颜色编码,那将是理想的。

因此,总体而言,Y 轴代表平均值,X 轴列出所有报告的行为,每个都有 3 个条形比较 3 种不同的性行为。任何帮助将不胜感激!!!!

杰西

4

1 回答 1

2

重新排列数据:

library(reshape2)
mdat <- melt(dat[,1:7]) ## Drop ANOVA vars
mdat <- data.frame(mdat,colsplit(mdat$variable,"\\.",c("type","val")))
cdat <- dcast(mdat,Reported.Behavior+type~val)

画图。

library(ggplot2)
ggplot(cdat,aes(x=Reported.Behavior,y=Mean,fill=type))+
    geom_bar(stat="identity",position="dodge")+
    ## ugly!
    ## geom_linerange(aes(ymin=Mean-SD,ymax=Mean+SD),
    ##   position=position_dodge(width=0.9))+
    coord_flip()
  • coord_flip()很好,因为它使阅读标签更容易。
  • 这里有注释掉的代码来添加显示 +/-1 SD 的行——我没有添加它们,因为 SD 太大以至于情节非常难看——你应该考虑一下......
  • 条形图很熟悉,但geom_point()可能更漂亮(更少的“非数据墨水”感觉Tufte)

在此处输入图像描述

于 2013-02-03T20:22:04.153 回答