gpt4 book ai didi

r - 如何根据 ggplot2 中的汇总数据创建堆积条形图

转载 作者:行者123 更新时间:2023-12-03 07:23:02 26 4
gpt4 key购买 nike

我正在尝试使用 ggplot 2 创建堆积条形图。我的宽格式数据如下所示。每个单元格中的数字是响应的频率。

activity                         yes    no  dontknow
Social events 27 3 3
Academic skills workshops 23 5 8
Summer research 22 7 7
Research fellowship 20 6 9
Travel grants 18 8 7
Resume preparation 17 4 12
RAs 14 11 8
Faculty preparation 13 8 11
Job interview skills 11 9 12
Preparation of manuscripts 10 8 14
Courses in other campuses 5 11 15
Teaching fellowships 4 14 16
TAs 3 15 15
Access to labs in other campuses 3 11 18
Interdisciplinary research 2 11 18
Interdepartamental projects 1 12 19

我使用 reshape2 融化了这张 table

 melted.data(wide.data,id.vars=c("activity"),measure.vars=c("yes","no","dontknow"),variable.name="haveused",value.name="responses")

这是我所能得到的。我想创建一个堆积条形图,其中 x 轴为事件,y 轴为响应频率,每个条形显示是、否和不知道的分布

我已经尝试过

ggplot(melted.data,aes(x=activity,y=responses))+geom_bar(aes(fill=haveused))

但恐怕这不是正确的解决方案

非常感谢任何帮助。

最佳答案

您还没有说您的解决方案有什么不正确的地方。但一些可能被视为问题的问题以及每个问题的一个可能的解决方案是:

  • x 轴刻度线标签相互碰撞。解决方案 - 旋转刻度线标签;
  • 标签(及其相应的条)出现的顺序与原始数据帧中的顺序不同。解决方案 - 重新排序因子“事件”的水平;
  • 要将文本定位在条形内,请将 position_stack 中的 vjust 参数设置为 0.5

以下可能是一个开始。

    # Load required packages
library(ggplot2)
library(reshape2)

# Read in data
df = read.table(text = "
activity yes no dontknow
Social.events 27 3 3
Academic.skills.workshops 23 5 8
Summer.research 22 7 7
Research.fellowship 20 6 9
Travel.grants 18 8 7
Resume.preparation 17 4 12
RAs 14 11 8
Faculty.preparation 13 8 11
Job.interview.skills 11 9 12
Preparation.of.manuscripts 10 8 14
Courses.in.other.campuses 5 11 15
Teaching.fellowships 4 14 16
TAs 3 15 15
Access.to.labs.in.other.campuses 3 11 18
Interdisciplinay.research 2 11 18
Interdepartamental.projects 1 12 19", header = TRUE, sep = "")

# Melt the data frame
dfm = melt(df, id.vars=c("activity"), measure.vars=c("yes","no","dontknow"),
variable.name="haveused", value.name="responses")

# Reorder the levels of activity
dfm$activity = factor(dfm$activity, levels = df$activity)

# Draw the plot
ggplot(dfm, aes(x = activity, y = responses, group = haveused)) +
geom_col(aes(fill=haveused)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.25)) +
geom_text(aes(label = responses), position = position_stack(vjust = .5), size = 3) # labels inside the bar segments

关于r - 如何根据 ggplot2 中的汇总数据创建堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com