ggplot2:轴不显示所有刻度线

时间:2019-07-16 20:40:40

标签: r ggplot2 ggpubr

我目前正在使用R中的ggpubr软件包(基于ggplot2)来绘制数据。当我绘制包括标准误差在内的两个条件的均值时,y轴应限制在1到7之间,我使用以下方法表示:

p <- ggline(data, x = "condition", y = "measure", 
            add = c("mean_se"), 
            ylab = "Measure")
ggpar(y, ylim = c(1, 7), ticks=T, yticks.by = 1)

但是,在最终图中,y轴仅显示1到6之间的值。 see graph attached

我尝试使用本机ggplot2绘制相同的数据,但是一旦更改布局,问题仍然存在。 对于ggplot2,我使用了:

p <- ggplot(data, aes(x=condition, y=measure)) + 
geom_line() +
geom_point()+
geom_errorbar(aes(ymin=measure-se, ymax=measure+se), width=.2, position=position_dodge(0.05)) +
ylab("measure") +
xlab("Condition")
p + scale_y_continuous(name="measure", limits=c(1, 7), breaks=c(1:7))
p + theme_classic()

如果有人可以帮助我解决这个问题,那就太好了。

编辑: 如评论中所建议,这是我尝试使用ggplot2绘制的数据:

structure(list(condition = structure(3:4, .Label = c("IC", "SC", 
"ILC", "SLC"), class = "factor"), measure = c(4.10233918128655, 3.83040935672515
), se = c(0.235026318386523, 0.216811675834834)), class = "data.frame", row.names = c(NA, 
-2L))

2 个答案:

答案 0 :(得分:1)

我认为我得到了一些类似于您的图,带有以下代码的正确y轴:

ggplot(data, aes(x = condition, y = measure)) + 
  geom_point() +
  geom_errorbar(aes(ymin = measure-se, ymax = measure+se), 
                width = .2, position = position_dodge(0.05)) +
  # Group prevents geom_line interpreting each x-axis point as it's own group
  geom_line(aes(group = rep(1, nrow(data)))) +
  xlab("Condition") + 
  # Expand is optional, it prevents padding beyond 1 and 7
  scale_y_continuous(name = "measure", 
                     limits = c(1, 7), 
                     breaks = 1:7, 
                     expand = c(0,0)) +
  theme_classic()

答案 1 :(得分:0)

解决方案更为简单。你做对了!除了一个笔误。这是正在发生的事情:

首先,您可以生成初始图。

p <- ggplot(data, aes(x=condition, y=measure)) + 
geom_line() + geom_point() +
geom_errorbar(aes(ymin=measure-se, ymax=measure+se), 
     width=.2, position=position_dodge(0.05)) + 
ylab("measure") +
xlab("Condition")

该图没有限制。添加限制并显示限制时,比例是正确的:

p + scale_y_continuous(name="measure", limits=c(1, 7), breaks=c(1:7))

但是请注意, p并没有改变!您没有存储将限制添加到p的结果。因此,p仍然没有scale_y_continuous。难怪那么当您键入

p + theme_classic()

...极限已经消失。但是,如果您尝试

p <- p + scale_y_continuous(name="measure", limits=c(1, 7), breaks=c(1:7))
p + theme_classic()

一切都会正确。