问题描述
我的数据:
Plate Month Day Concentration
A April 1 17.1094
B April 2 16.001
C April 3 17.9501
D April 4 18.3686
E April 5 18.3133
F April 6 19.1189
G May 1 16.0423
H May 2 16.3614
I May 3 18.5723
J May 4 19.1091
K May 5 17.6863
L May 6 18.2647
使用 geom_line 我能够绘制一个折线图,将所有点连接到一个漂亮的图中,如下所示:
myData <- data.frame(read.table("myData.txt",sep="\t",header=TRUE))
ggplot(myData,aes(x = Plate,y = Concentration,group=1)) + geom_point() + geom_line()
我使用分面面板根据月份对数据进行了区分,然后绘制了如下所示的折线图。此处,线图在 4 月的最后一天之后断开。我如何绘制跨面的线图,即从四月到五月?
ggplot(myData,aes(x = Day,y = Concentration)) + facet_wrap(~ Month,nrow = 1) + geom_line() + geom_point()
解决方法
你可以伪造它:
mydata <- "Plate Month Day Concentration
A April 1 17.1094
B April 2 16.001
C April 3 17.9501
D April 4 18.3686
E April 5 18.3133
F April 6 19.1189
G May 1 16.0423
H May 2 16.3614
I May 3 18.5723
J May 4 19.1091
K May 5 17.6863
L May 6 18.2647"
myData <- data.frame(read_table(mydata))
myData <- myData %>% mutate(plot_day = seq_along(Day))
rect_data <- myData %>% group_by(Month) %>%
summarise(data.frame(xmin = min(plot_day),xmax=max(plot_day))) %>%
mutate(ymin = 19.25,ymax=19.5)
ggplot() +
geom_point(data = myData,aes(x = plot_day,y = Concentration)) +
geom_rect(data=rect_data,aes(ymin=ymin,ymax=ymax,xmin=xmin-c(.55,.45),xmax=xmax+c(.45,.55)),fill="gray75",col="transparent") +
geom_text(data = rect_data,aes(x=c(3.5,9.5),y=19.375,label = c("April","May"))) +
coord_cartesian(xlim=c(.449,12.551),ylim=c(15.75,19.501),expand=0) +
scale_x_continuous(breaks = seq(2,12,by=2),labels=c("2","4","6","2","6")) +
geom_vline(xintercept=6.5,col="white",size=2) +
geom_line(data = myData,y = Concentration)) +
labs(x="Day")