【发布时间】:2023-03-14 23:14:01
【问题描述】:
我不是 Pro R 用户,但我已经尝试了多种方法,但找不到问题的解决方案。
我为 2x2 ANOVA 创建了一个条形图,包括误差条、APA 主题和基于此网站的自定义颜色:https://sakaluk.wordpress.com/2015/08/27/6-make-it-pretty-plotting-2-way-interactions-with-ggplot2/ 它工作得很好,但 y 轴从 0 开始,尽管我的比例范围仅为 1 - 7。我正在尝试调整轴,但出现奇怪的错误。
这就是我所做的:
# see https://sakaluk.wordpress.com/2015/08/27/6-make-it-pretty-plotting-2-way-interactions-with-ggplot2/
interactionMeans(anova.2)
plot(interactionMeans(anova.2))
#using ggplot
install.packages("ggplot2")
library(ggplot2)
# create factors with value
GIFTSTUDY1DATA$PRICE <- ifelse (Scenario == 3 | Scenario == 4, 1, -1 )
table(GIFTSTUDY1DATA$PRICE)
GIFTSTUDY1DATA$PRICE <- factor(GIFTSTUDY1DATA$PRICE, levels = c(-1, +1),
labels = c("2 expensive", "1 inexpensive"))
GIFTSTUDY1DATA$AFFECT <- ifelse (Scenario == 1 | Scenario == 3, -1, +1 )
table(GIFTSTUDY1DATA$AFFECT)
GIFTSTUDY1DATA$AFFECT <- factor(GIFTSTUDY1DATA$AFFECT,
levels = c(-1,1),
labels = c("poor", "rich"))
# get descriptives
dat2 <- describeBy(EVALUATION,list(GIFTSTUDY1DATA$PRICE,GIFTSTUDY1DATA$AFFECT),
mat=TRUE,digits=2)
dat2
names(dat2)[names(dat2) == 'group1'] = 'Price'
names(dat2)[names(dat2) == 'group2'] = 'Affect'
dat2$se = dat2$sd/sqrt(dat2$n)
# error bars +/- 1 SE
limits = aes(ymax = mean + se, ymin=mean - se)
dodge = position_dodge(width=0.9)
# set layout
apatheme=theme_light()+
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.border=element_blank(),
axis.line=element_line(),
text=element_text(family='Arial'))
#plot
p=ggplot(dat2, aes(x = Affect, y = mean, fill = Price))+
geom_bar(stat='identity', position=dodge)+
geom_errorbar(limits, position=dodge, width=0.15)+
apatheme+
ylab('mean gift evaluatoin')+
scale_fill_manual(values=c("yellowgreen","skyblue4"))
p
这给了我这个数字:
https://i.stack.imgur.com/MwdVo.png
现在,如果我尝试使用 ylim 或 scale_y_continous 更改 y 轴
p + ylim(1,7)
p + scale_y_continuous(limits = c(1,7))
我得到了一个带有 y 轴的图表,但没有条形图和一条错误消息说明
删除了包含缺失值的 4 行 (geom_bar)。
https://i.stack.imgur.com/p66H8.png
使用
p + expand_limits(y=c(1,7))
p
更改 y 轴的上端,但仍包含零!
我做错了什么?我是否必须在不使用 geom_bar 的情况下重新开始? 提前致谢。
【问题讨论】: