R 使用ggplot2绘制一组数据

R 使用ggplot2绘制一组数据,r,ggplot2,R,Ggplot2,我的旧帖子新增内容: 我很抱歉,如果我似乎期待有人为我做这项工作!这绝对不是我的本意 使用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 Communica

我的旧帖子新增内容:

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

使用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(所有平均值,aes(平均值,恐同调侃,颜色=平均值))+geom_bar()

然而,这只产生了一个图,表示恐同的戏弄手段。我正试图找到一种方法,将所有的行为方式放在同一张图上(即,并排的条形图,按性别编码的颜色)

我试图通过生成只包含一种行为的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来绘制这些数据。如果我能生成一个具有以下内容的条形图,那将是理想的:

    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))
Y轴:“平均值” X轴:“报告的行为”,对于每个报告的行为,我希望有3个单独的条,并排(异性恋平均值、质疑平均值和LGB平均值)。那么,如果我能给这些画上颜色代码,那就太理想了

因此,总的来说,Y轴代表平均值,X轴列出了所有报告的行为,每个行为都有3条横线比较3种不同的性特征。任何帮助都将不胜感激

杰西

重新排列数据:

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)
  • coord\u flip()
    很好,因为它使标签更容易阅读
  • 这里有注释掉的代码来添加显示+/-1 SD的线条——我没有添加它们,因为SD太大了,以至于绘图非常难看——你应该考虑一下
  • 条形图很常见,但
    geom_point()
    可能会更漂亮(减少“非数据墨水”传感器)

欢迎来到堆栈溢出。一般来说,当成员们看到提问者努力解决问题时,他们更愿意回答问题。要求这样做基本上为你做所有的工作是不好的。因此,您应该采取的第一步是通过编辑/添加到上面的问题,向我们展示您已经编写了哪些R代码。第二步是向我们展示(部分)您的数据。
dput
功能很有用;在R提示符下键入
?dput
,以获取帮助。另请参见。此外,如果您需要更多帮助来了解R和ggplot2的基础知识,请与课程主管联系。他们的工作就是帮助你学习基础知识。