Как я могу разбить ось Y, не начиная с 0 на моем графике? Думаю, с ggplot этого не сделать. Какие-нибудь другие решения?

Я хочу получить это: введите описание изображения здесь

Мой график ggplot:

ggplot(allEvents %>% dplyr::filter(FixationID>1,FixationID<15), aes(FixationID, Fixation)) +
  geom_line(stat="summary", fun.y=mean, position="identity") + theme_bw() + stat_summary(fun.data=mean_se)+   
  labs (x = "Ordinal fixation number", y = "Fixation duration (s)") +  
  scale_y_continuous (name="Fixation duration (s) ", limits=c(0.1, 0.4)) + 
  scale_x_continuous (name="Ordinal fixation number", breaks=c(5,10,15,20)) + 
  geom_smooth(method=lm)

Выдержка из моих данных:

structure(list(Fixation = c(0.383, 0.185, NA, 0.312, NA, 0.328, 
NA, 0.259, NA, 0.335), FixationID = c(1, 2, NA, 3, NA, 4, NA, 
5, NA, 6)), .Names = c("Fixation", "FixationID"), row.names = c(NA, 
10L), class = "data.frame")
2
Tk Shmk 16 Апр 2020 в 00:33

1 ответ

Лучший ответ

Как упоминается в комментарии @teunbrand, ggplot2 не допускает разрывов осей, так как это действительно сложно сделать.

Кроме того, вы можете построить свой график в виде графика base r и использовать функцию axis.break из пакета plotrix.

(NB: я использовал функцию between из dplyr, чтобы выбрать подмножество интересующих вас данных. В моем примере ваш набор данных называется df).

library(dplyr) 
library(plotrix)

with(subset(df, between(FixationID,2,15)),
     plot(x = FixationID, y = Fixation, type = "b", ylim = c(0.1,0.4), pch = 16))
with(subset(df, between(FixationID,2,15)),
     abline(lm(Fixation~FixationID),col = "blue"))
axis.break(axis = 2, breakpos = 0.1, style="slash")

enter image description here

Это отвечает на ваш вопрос?

0
dc37 15 Апр 2020 в 22:04