R 在轴切换的情况下绘制测量结果

R 在轴切换的情况下绘制测量结果,r,plot,ggplot2,bar-chart,survey,R,Plot,Ggplot2,Bar Chart,Survey,我的R专业水平是“人人R”的25%,这不足以完成我的第一个现实任务: 48人被要求记忆和回忆10个数字。现在是结果 应以条形图的形式呈现,并在 X轴和存储的位数-在Y轴上 以下是我现在所做的: responses <- c(10,10,10,10,10,10,10,10,10,10,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,2,2,2,2,2,2,6,6,6,6,8,8,8,8,4,4,4,7,7,9) # 10 people recalled 10 dig

我的R专业水平是“人人R”的25%,这不足以完成我的第一个现实任务:

48人被要求记忆和回忆10个数字。现在是结果 应以条形图的形式呈现,并在 X轴和存储的位数-在Y轴上


以下是我现在所做的:

responses <- c(10,10,10,10,10,10,10,10,10,10,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,2,2,2,2,2,2,6,6,6,6,8,8,8,8,4,4,4,7,7,9)
# 10 people recalled 10 digits, 11 people - 3 digits, 7 people 5 digits, etc

为什么这个图表不是我需要的

  • 响应的数量应该在X轴上,而存储的数字的数量-在Y轴上(这样分布会更明显)
在上面的代码中,我很乐意将
ggplot(df,aes(df$responses))
替换为
ggplot(df,aes(df$something__))
,但是
responses
列是我的全部


我试过了。你在上面看到的只是我在过去三天里一直在尝试的一个影子。不幸的是,我的大部分尝试归结为跟随自己的轨迹进入相同的死胡同

我搜索了。我发现有两类解决方案:要么是针对多个列/变量,我不知道如何应用于我的单列data.frame;或者是那些假设拥有更多知识的人

如果有任何提示,我将不胜感激


感谢您的耐心。

您可以使用基本图形功能
barplot()

或使用
coord\u flip()绘制ggplot


像这样朴素的柱状图

responses <- c(10,10,10,10,10,10,10,10,10,10,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,2,2,2,2,2,2,6,6,6,6,8,8,8,8,4,4,4,7,7,9)
df <- data.frame(responses  = responses)

我想你可能想看看ggplot还需要做些什么(更改主题、颜色、添加线条和注释)(后者是用sumary(响应)完成的)。如果其中一个答案解决了你的问题,你应该接受它,或者至少升级它。我点击了✔ 在该答案旁边-该答案有效吗?是的,您单击了另一个答案。感谢您的时间和专业知识。是否有一种方法不是通过
响应,而是通过每个响应的计数来绘制我的数据?请参见此处:(这是我最初尝试询问的问题。)这就是这里绘制的。例如,三个人在数据中记住了4位数字。数字(4)在y轴上,人数(3)是底部第三个条的x轴值。
barplot(table(responses), horiz=T, xlab="Count",ylab="Digits Mem")
ggplot(data.frame(resp=factor(responses)), aes(resp)) + 
    geom_bar() + coord_flip() +
    ylab("Count") + xlab("Digits Mem")
responses <- c(10,10,10,10,10,10,10,10,10,10,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,2,2,2,2,2,2,6,6,6,6,8,8,8,8,4,4,4,7,7,9)
df <- data.frame(responses  = responses)
ggplot(data = df, aes(x = responses)) +
  geom_histogram(stat = "bin", color = "blue") +
  theme_tufte() +
  labs(x = "Digits Memorized", y = "Number of Subjects") +
  ggtitle("Count of Participants Per Digits Memorized") +
  annotate("segment", x = 4.5, xend = 8.5, y = 5.646, yend = 5.646, width =3) +
  annotate("text", x = 6.5, xend = 8.5, y = 6, yend = 6, label = "Average = 5.5")