Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot2中用条形图覆盖线图_R_Ggplot2 - Fatal编程技术网

R 在ggplot2中用条形图覆盖线图

R 在ggplot2中用条形图覆盖线图,r,ggplot2,R,Ggplot2,提供了一个数据框(见下文),该数据框是从一份调查问卷中提取的,询问不同社区的人们对安全感的看法。我已经设法创建了一个条形图,显示每个社区的安全感和分组结果: questionnaire_raw = read.csv("https://www.dropbox.com/s/l647q2omffnwyrg/local.data.csv?dl=0") ggplot(data = questionnaire_raw, aes(x = factor(Seguridad.de.tu.barr

提供了一个数据框(见下文),该数据框是从一份调查问卷中提取的,询问不同社区的人们对安全感的看法。我已经设法创建了一个条形图,显示每个社区的安全感和分组结果:

questionnaire_raw = read.csv("https://www.dropbox.com/s/l647q2omffnwyrg/local.data.csv?dl=0")

ggplot(data = questionnaire_raw, 
       aes(x = factor(Seguridad.de.tu.barrio..de.día.), # We have to convert x values to categorical data
           y = (..count..)/sum(..count..)*100,
           fill = neighborhoods)) + 
  geom_bar(position="dodge") + 
  ggtitle("Seguridad de día") + 
  labs(x="Grado de seguridad", y="% encuestados", fill="Barrios")


我想用一个折线图覆盖这些结果,该折线图表示所有社区中每个安全类别(1、2、3或4)的平均值(即,没有分组结果),因此很容易知道特定的社区是高于还是低于所有社区的平均值。但是,由于这是我第一次使用R,我不知道如何使用数据帧计算该平均值,然后将其覆盖在上一个条形图中。

使用
数据。表
用于数据操作和lukeA的注释:

require(ggplot2)
require(data.table)
setDT(questionnaire_raw)
setnames(questionnaire_raw, c("Timestamp", "Barrios", "Grado"))

plot_data <- questionnaire_raw[,.N, by=.(Barrios,Grado)]
ggplot(plot_data, aes(x=factor(Grado), y = N, fill = Barrios)) +
  geom_bar(position="dodge", stat="identity") +
  stat_summary(fun.y=mean, geom = "line", mapping = aes(group = 1)) +
  ggtitle("Seguridad de día") + 
  labs(x="Grado de seguridad", y="% encuestados", fill="Barrios")
require(ggplot2)
要求(数据表)
setDT(原始调查问卷)
集合名(原始问卷,c(“时间戳”、“Barrios”、“Grado”))

使用
数据绘制数据。用于数据操作和lukeA评论的表

require(ggplot2)
require(data.table)
setDT(questionnaire_raw)
setnames(questionnaire_raw, c("Timestamp", "Barrios", "Grado"))

plot_data <- questionnaire_raw[,.N, by=.(Barrios,Grado)]
ggplot(plot_data, aes(x=factor(Grado), y = N, fill = Barrios)) +
  geom_bar(position="dodge", stat="identity") +
  stat_summary(fun.y=mean, geom = "line", mapping = aes(group = 1)) +
  ggtitle("Seguridad de día") + 
  labs(x="Grado de seguridad", y="% encuestados", fill="Barrios")
require(ggplot2)
要求(数据表)
setDT(原始调查问卷)
集合名(原始问卷,c(“时间戳”、“Barrios”、“Grado”))

绘图数据添加诸如
+stat\u summary(fun.data=“mean\u cl\u normal”,geom=“line”,mapping=aes(group=1))
(未测试)之类的内容怎么样?导致
错误:stat\u summary需要以下缺失的美学:y
添加诸如
+stat\u summary(fun.data=“mean\u cl\u normal”,geom=“line”,mapping=aes之类的内容怎么样(group=1))
(未测试)?导致
错误:stat_summary需要以下缺失的美学:y
非常感谢您的回答。它工作正常,但我必须了解您在做什么,因为原始数据帧要大得多(我们有72个变量,而不是3个)似乎我无法复制setnames行。我认为我需要创建一个包含所有72个变量的向量,但由于我从未听说过该函数,我不确定。我将尝试使用我需要的变量创建一个新的数据框。“setnames”行只是更改数据的列名。查看前后的数据。它是不难。我正在重新阅读你的代码,而且是诚实的(而且是可耻的)我几乎不理解你在这上面做的任何事情。我仍然需要学习很多关于R的知识。带有
by
的行计算发生率非常感谢你的回答。它工作得很好,尽管我必须理解你在做什么,因为原始数据帧要大得多(我们有72个变量,而不是3个)似乎我无法复制setnames行。我认为我需要创建一个包含所有72个变量的向量,但由于我从未听说过该函数,我不确定。我将尝试使用我需要的变量创建一个新的数据框。“setnames”行只是更改数据的列名。查看前后的数据。它是不难。我正在重新阅读你的代码,老实说(也很惭愧地)我几乎不理解你在代码上做的任何事情。我还需要学习很多关于R的知识……而带有
by
的行计算了发生的次数