我尝试了一个新包ggthemr,但我遇到了两个问题。
数据集是:
tma<-data.frame(
invasion=c(0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1),
sediment=c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1),
nitrogen=c( 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1),
type=c("Evenness index",
"Evenness index",
"Evenness index",
"Evenness index",
"Total mass(g)",
"Total mass(g)",
"Total mass(g)",
"Total mass(g)",
"Evenness index",
"Evenness index",
"Evenness index",
"Evenness index",
"Total mass(g)",
"Total mass(g)",
"Total mass(g)",
"Total mass(g)"),
mean=c(0.76109,
0.63923,
0.78138,
0.73626,
59.0425,
56.15383,
50.39167,
44.9215,
0.60109,
0.55402,
0.81587,
0.74957,
62.207,
53.21033,
49.99517,
42.38767),
standard.error=c(0.03638,
0.06232,
0.045,
0.03912,
5.87524,
5.87524,
5.87524,
5.87524,
0.05093,
0.04807,
0.02694,
0.04843,
5.87524,
5.87524,
5.87524,
5.87524)
)
tma$nitrogen <- as.factor(tma$nitrogen)
tma$sediment <- as.factor(tma$sediment)
代码是:
library(tidyverse)
library(ggthemr)
ggthemr('light', layout = 'scientific',
spacing = 1, type = 'inner', line_weight = 0.6,
)
ggplot(tma, aes(invasion, mean, color = sediment)) +
geom_ribbon(
aes(ymin = mean - standard.error, ymax = mean + standard.error,group=sediment),
alpha = 0.2,
color = NA
) +
geom_line(size = 1) +
geom_point(show.legend = TRUE) +
facet_grid(type ~ nitrogen, scales = "free_y") +
scale_x_discrete(breaks = NULL, expand = c(0, 0.10)) +
scale_y_continuous(sec.axis = dup_axis(name=NULL))+
theme(legend.position = "bottom") +
theme(panel.spacing.x = unit(0.1, "lines"), panel.spacing.y = unit(0.1, "lines")) +
theme(strip.text.x = element_text(size = 10),
strip.text.y = element_text(size = 14),
axis.title.y = element_text(size = 14),
axis.title.x = element_text(size = 14),
) +
xlab("From not invaded to invaded") +
ylab("Mean with standard error")
输出如下:
我预计复制的y轴位于图的右侧,并且在小平面条的左侧,但它实际上位于小平面条的右侧。
另一个问题是小面条无法完全显示,例如,总质量(g)的标题。
出了什么问题?我不知道应该调整哪些参数。 非常感谢。
答案 0 :(得分:0)
library(devtools)
# devtools::install_github('cttobin/ggthemr') # need this to install ggthemr
library(ggthemr)
ggthemr('light', layout = 'scientific',
spacing = 1, type = 'inner', line_weight = 0.6
)
ggplot(tma, aes(invasion, mean, color = sediment)) +
geom_ribbon(
aes(ymin = mean - standard.error,
ymax = mean + standard.error,group = sediment),
alpha = 0.2, color = NA) +
geom_line(size = 1) +
geom_point(show.legend = TRUE) +
facet_grid(type ~ nitrogen, scales = "free_y") +
scale_x_discrete(breaks = NULL, expand = c(0, 0.10)) +
scale_y_continuous(sec.axis = dup_axis(name=NULL))+
theme(legend.position = "bottom",
panel.spacing.x = unit(0.1, "lines"),
panel.spacing.y = unit(0.1, "lines"),
strip.text.x = element_text(size = 10),
strip.text.y = element_text(size = 14, margin = margin(0,0,0,5)),
strip.placement = "outside",
axis.title.y = element_text(size = 14),
axis.title.x = element_text(size = 14)) +
xlab("From not invaded to invaded") +
ylab("Mean with standard error")
备注:强>
theme(strip.placement = "outside")
。这将条带放在轴的另一侧。margin = margin(0,0,0,5)
的{{1}}中添加了element_text
参数。这可以控制条带文本的边距。首先,调整哪个数字似乎令人困惑,但快速strip.text.y
告诉我顺序是:t = top,r = right,b = bottom,l = left(想想“ tr 强> OU的 BL 强> E“)。因此,最后一个数字控制条带文本的左边距。?element_text
的