我想修改facet_wrap中每个图形的y轴的断点和限制。我希望例如减少其中一些的休息时间,或者我希望它们从0开始。
ggplot(granuControlLw, aes(distance, group=time))
+ geom_line(aes(y = D)) + xlab("Distance from the gate (m)")
+ geom_point(aes(y = D, shape = factor(time)), size=4.5) + theme_bw()
+ theme(axis.text.x = element_text(size = 15, angle = 90), axis.text.y = element_text(size = 15, angle = 0))
+ scale_x_continuous(breaks=seq(-50,1100,50))
+ theme(axis.text = element_text(size = 15),axis.title = element_text(size = 15),legend.title = element_text(size = 15, face = 'bold'),legend.text= element_text(size=15), axis.line = element_line(colour = "gray"))
+ theme(strip.background = element_blank())
+ facet_wrap (evolution~ section, scale="free_y", ncol=1)
Here is a few raws of my input file:
evolution time distance section D
D5 After 680 (> S450) 0.8286370543
D5 After 710 (> S450) 1.0857412286
D5 After 950 (> S450) 0.29524528
D5 After 1010 (> S450) 0.7115190438
D16 After 680 (> S450) 2.7797109467
D16 After 710 (> S450) 4.2948672219
D16 After 950 (> S450) 0.5445345574
D16 After 1010 (> S450) 2.9139811532
D25 After 680 (> S450) 5.3764331372
D25 After 710 (> S450) 6.6094309926
D25 After 950 (> S450) 0.789626722
D25 After 1010 (> S450) 6.25184791
D50 After 680 (> S450) 13.0637943297
D50 After 710 (> S450) 17.155345894
D50 After 950 (> S450) 3.2134971025
D50 After 1010 (> S450) 18.9873626321
D75 After 680 (> S450) 19.491433335
D75 After 710 (> S450) 26.1926456265
D75 After 950 (> S450) 12.4823051787
D75 After 1010 (> S450) 45.0209667314
答案 0 :(得分:5)
我不知道在刻面图中修改轴断裂和各个面的范围的方法。但是,另一种选择是为刻面变量的每个级别创建单独的绘图,然后将所有绘图放在一起。单独创建每个绘图可以让您更精细地控制每个绘图的轴断点和范围。
以下是内置mtcars
数据框的示例:
library(scales) # For pretty_breaks
library(grid) # For textGrob
library(gridExtra) # For grid.arrange
library(cowplot) # For plot_grid
下面的代码会创建一个图表列表,每个级别cyl
一个。请注意使用scale_y_continuous
为每个绘图设置y范围。这只是一个例子。如果您愿意,可以对轴范围进行更精细的控制,并为每个绘图打破。
pl = lapply(sort(unique(mtcars$cyl)), function(i) {
p = ggplot(mtcars[mtcars$cyl==i, ], aes(wt, mpg)) +
facet_wrap(~cyl) +
geom_point() +
labs(x="Weight", y="") +
scale_y_continuous(limits=c(ifelse(i==4, 10, 0), 1.1 * max(mtcars$mpg[mtcars$cyl==i])),
breaks=pretty_breaks(ifelse(i==6, 6, 3))) +
scale_x_continuous(limits=range(mtcars$wt)) +
theme(plot.margin=unit(c(0, 0.1, 0, -1),"lines"))
# Remove x-axis labels and title except for last plot
if(i < max(mtcars$cyl)) p = p + theme(axis.text.x=element_blank(),
axis.title.x=element_blank())
return(p)
})
现在,将这些图列在一列中。我们还添加了y轴标签。
grid.arrange(textGrob("MPG", rot=90), plot_grid(plotlist=pl, ncol=1, align="h"),
widths=c(0.03,0.97), ncol=2)