[英]Is there a way of plotting the facet strip names (switched y) outside the y-axis name in a facet_grid plot?
I made a facetted plot (using ggplot2::facet_grid
) where I switched the y-axis, so the y-strip text is plotted on the left side of the plot and already used theme(strip.placement = "outside")
to place the strip text outside the y-axis values.我制作了一个ggplot2::facet_grid
图(使用ggplot2::facet_grid
),在那里我切换了 y 轴,因此 y ggplot2::facet_grid
本绘制在图的左侧并且已经使用了theme(strip.placement = "outside")
来放置y 轴值之外的条带文本。 However, the strip titles are plotted between the y-axis name and the y-axis values.但是,条带标题绘制在 y 轴名称和 y 轴值之间。 I would like to plot the strip text outside the y-axis name, so that the y-axis name is plotted right next to the y-axis values.我想在 y 轴名称之外绘制条带文本,以便在 y 轴值旁边绘制 y 轴名称。 Is that possible?那可能吗?
Here is part of my data:这是我的部分数据:
df<-structure(list(place = c("Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1",
"Site1", "Site1", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2", "Site2", "Site2", "Site2",
"Site2", "Site2", "Site2", "Site2"), year = c(2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L), month = c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L,
4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L,
7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L), perc = c(0.01, 0.16, 0.06, 0.02, 0,
0, 0.01, 0.05, 0.17, 0.01, 0, 0.02, 0.17, 0.05, 0.02, 0, 0, 0.07,
0.15, 0.01, 0, 0, 0, 0.04, 0.03, 0.14, 0.02, 0.01, 0, 0, 0.01,
0.03, 0.14, 0.06, 0, 0, 0, 0, 0.02, 0.12, 0.03, 0.03, 0, 0, 0,
0, 0.02, 0.11, 0.05, 0.01, 0, 0, 0.02, 0.03, 0.13, 0.01, 0.01,
0, 0, 0, 0, 0.05, 0.08, 0.05, 0.01, 0, 0, 0, 0.04, 0.08, 0.05,
0.02, 0, 0, 0, 0.08, 0.09, 0.01, 0.01, 0, 0, 0, 0, 0.03, 0.14,
0.04, 0.03, 0.01, 0.01, 0, 0, 0.1, 0.1, 0.05, 0, 0, 0, 0, 0.11,
0.11, 0.02, 0.01, 0, 0, 0, 0, 0.03, 0.14, 0.07, 0.02, 0, 0, 0,
0.05, 0.02, 0.16, 0, 0.01, 0, 0, 0, 0, 0.08, 0.1, 0.06, 0.01,
0, 0, 0, 0.01, 0.04, 0.02, 0.03, 0.08, 0.02, 0.01, 0, 0, 0, 0,
0, 0, 0, 0, 0.02, 0.01, 0.05, 0.06, 0.04, 0, 0, 0, 0, 0, 0, 0,
0, 0.02, 0.06, 0.09, 0.02, 0, 0, 0, 0, 0, 0, 0.01, 0.02, 0.05,
0.06, 0.04, 0, 0, 0, 0.01, 0.01, 0.07, 0.07, 0.04, 0.01, 0, 0,
0, 0, 0.01, 0.04, 0.07, 0.04, 0.03, 0, 0, 0, 0, 0, 0.16, 0.03,
0.06, 0, 0, 0.15, 0.01, 0.08, 0.01, 0.11, 0.07, 0.07, 0, 0.09,
0.11, 0.04, 0, 0, 0.04, 0.11, 0.08, 0.02, 0, 0, 0, 0.06, 0.12,
0.05, 0.02, 0.01, 0, 0, 0.05, 0.08, 0.05, 0.02, 0.01, 0, 0.08,
0.07, 0.04, 0.01, 0, 0, 0, 0.04, 0.09, 0.05, 0.02, 0, 0, 0, 0.02,
0.06, 0.07, 0.03, 0.01, 0, 0, 0.01, 0.05, 0.07, 0.05, 0.02, 0,
0, 0, 0.01, 0.07, 0.05, 0.05, 0.01, 0, 0, 0, 0.01, 0.07, 0.08,
0.06, 0.03, 0, 0, 0, 0.04, 0.07, 0.06, 0.06, 0.02, 0, 0, 0.03,
0.09, 0.08, 0.03, 0.01, 0, 0, 0.04, 0.09, 0.08, 0.03, 0, 0, 0,
0.06, 0.08, 0.07, 0.03, 0.01, 0, 0, 0.03, 0.08, 0.07, 0.05, 0.01,
0, 0, 0, 0.03, 0.06, 0.05, 0.03, 0.02, 0.01, 0, 0, 0, 0, 0.02,
0.06, 0.05, 0.04, 0.02, 0.01, 0, 0, 0, 0, 0.03, 0.08, 0.05, 0.02,
0.01, 0, 0, 0, 0, 0.02, 0.05, 0.05, 0.03, 0.03, 0.02, 0.01, 0,
0, 0, 0, 0, 0, 0.02, 0.04, 0.05, 0.04, 0.02, 0.01, 0.01, 0, 0,
0, 0, 0.01, 0.03, 0.05, 0.05, 0.03, 0.02, 0, 0, 0, 0, 0, 0),
category = c("0", "1", "2", "3", "4", "0", "1", "2", "3",
"4", "5", "0", "1", "2", "3", "4", "0", "1", "2", "3", "4",
"5", "6", "0", "1", "2", "3", "4", "5", "0", "1", "2", "3",
"4", "5", "6", "7 - 14", "0", "1", "2", "3", "4", "5", "6",
"0", "1", "2", "3", "4", "5", "6", "7 - 14", "0", "1", "2",
"3", "4", "5", "6", "0", "1", "2", "3", "4", "5", "6", "7 - 14",
"0", "1", "2", "3", "4", "5", "6", "0", "1", "2", "3", "4",
"5", "6", "7 - 14", "0", "1", "2", "3", "4", "5", "6", "7 - 14",
"0", "1", "2", "3", "4", "5", "6", "0", "1", "2", "3", "4",
"5", "6", "0", "1", "2", "3", "4", "5", "6", "7 - 14", "0",
"1", "2", "3", "4", "5", "6", "7 - 14", "7 - 14", "0", "1",
"2", "3", "4", "5", "6", "0", "1", "2", "3", "4", "5", "6",
"7 - 14", "7 - 14", "7 - 14", "7 - 14", "7 - 14", "7 - 14",
"7 - 14", "0", "1", "2", "3", "4", "5", "6", "7 - 14", "7 - 14",
"7 - 14", "7 - 14", "7 - 14", "7 - 14", "0", "1", "2", "3",
"4", "5", "6", "7 - 14", "7 - 14", "7 - 14", "7 - 14", "1",
"2", "3", "4", "5", "6", "7 - 14", "7 - 14", "7 - 14", "7 - 14",
"1", "2", "3", "4", "5", "6", "7 - 14", "7 - 14", "1", "2",
"3", "4", "5", "6", "7 - 14", "7 - 14", "7 - 14", "7 - 14",
"7 - 14", "0", "1", "2", "3", "4", "0", "1", "2", "3", "0",
"1", "2", "3", "0", "1", "2", "3", "4", "0", "1", "2", "3",
"4", "5", "6", "0", "1", "2", "3", "4", "5", "6", "0", "1",
"2", "3", "4", "5", "0", "1", "2", "3", "4", "5", "6", "0",
"1", "2", "3", "4", "5", "6", "0", "1", "2", "3", "4", "5",
"6", "0", "1", "2", "3", "4", "5", "6", "7 - 14", "0", "1",
"2", "3", "4", "5", "6", "7 - 14", "0", "1", "2", "3", "4",
"5", "6", "7 - 14", "0", "1", "2", "3", "4", "5", "6", "0",
"1", "2", "3", "4", "5", "6", "0", "1", "2", "3", "4", "5",
"6", "0", "1", "2", "3", "4", "5", "6", "0", "1", "2", "3",
"4", "5", "6", "7 - 14", "0", "1", "2", "3", "4", "5", "6",
"7 - 14", "7 - 14", "7 - 14", "0", "1", "2", "3", "4", "5",
"6", "7 - 14", "7 - 14", "7 - 14", "0", "1", "2", "3", "4",
"5", "6", "7 - 14", "7 - 14", "0", "1", "2", "3", "4", "5",
"6", "7 - 14", "7 - 14", "7 - 14", "7 - 14", "0", "1", "2",
"3", "4", "5", "6", "7 - 14", "7 - 14", "7 - 14", "7 - 14",
"7 - 14", "7 - 14", "0", "1", "2", "3", "4", "5", "6", "7 - 14",
"7 - 14", "7 - 14", "7 - 14", "7 - 14")), row.names = c(NA,
-379L), class = c("tbl_df", "tbl", "data.frame"))
Here is the code I used to build the plot.这是我用来构建情节的代码。
library(ggplot2)
library(lemon)
ggplot(df,aes(x = month,
y = perc,
fill = category)) +
geom_col(position = "fill") +
facet_rep_grid(place ~ year ,
repeat.tick.labels = T,
switch = "y") +
theme_minimal() +
theme(strip.text.y = element_text(angle = 180),
strip.placement = "outside")
And the resulting the plot:以及由此产生的情节:
Finally, this is the desired plot:最后,这是所需的情节:
I don't think there is a way within ggplot2 , but it can be done with additional packages.我认为ggplot2 中没有办法,但可以通过其他包来完成。
library(ggplot2)
library(lemon)
library(cowplot)
library(grid)
g <- ggplot(df,aes(x = month,
y = perc,
fill = category)) +
geom_col(position = "fill") +
facet_rep_grid(place ~ year ,
repeat.tick.labels = T) +
theme_minimal() +
theme(strip.text.y = element_blank())
a <- textGrob('Site 1', gp=gpar(fontsize=10))
b <- textGrob('Site 2', gp=gpar(fontsize=10))
plot_grid(plot_grid(a, b, ncol = 1), g, rel_widths = c(0.1, 1))
I found what I think is a more direct method (re-positioning the axis-title, than constructing and placing new strip entries):我发现我认为是一种更直接的方法(重新定位轴标题,而不是构建和放置新的条带条目):
# as above but with ...
+ theme(strip.text.y = element_text(angle = 180),
axis.title.y = element_text(vjust = -10), # value by experiment
strip.placement = "outside")
The vjust
argument was taken relative to the y axis title orientation. vjust
参数是相对于 y 轴标题方向进行的。 Using hjust moved it up and down.使用 hjust 上下移动它。 I'm guessing that this is units of "points".我猜这是“点”的单位。 It appeared to me that the hjust
values were interpreted in units of "upc".在我看来, hjust
值是以“upc”为单位解释的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.