我想制作一個 ggplot 函式,它允許我選擇資料集、x 軸和 y 軸上的資料以及 y 軸標簽作為運算式,但我無法讓 y 軸運算式成為其中的一部分功能。
這是我到目前為止所擁有的:
x_vs_time <- function (data, xaxis, yaxis, yaxislabel) {
ggplot(data, aes(x = {{xaxis}},
y= {{yaxis}}))
geom_point(size =3, alpha =0.5)
ylab (expression(yaxislabel))
}
x_vs_time (alldata, daycount, nutrient_concentration, NO[3]~(mu*M))
當我運行該函式時,y軸標簽顯示為函式“yaxislabel”中的變數名稱,我無法修復它。我可以將其作為普通標簽包含在內,但我有多個運算式希望包含在多個圖中,例如:
- ylab (運算式 (Si:NO3~drawdown))
- ylab (運算式 (NO[3]~(mu*M)))
- ylab (運算式 (Cells~L^-1))
- 等等。
有誰知道我如何在函式中包含 y 軸標簽運算式?
uj5u.com熱心網友回復:
使用substitute而不是expression. 當您使用expression時,它會捕獲括號內的文字名稱,而substitute會為您提供傳遞給函式的實際引數。
x_vs_time <- function (data, xaxis, yaxis, yaxislabel) {
ggplot(data, aes(x = {{xaxis}}, y = {{yaxis}}))
geom_point(size = 3, alpha = 0.5)
ylab(substitute(yaxislabel))
}
顯然,我們沒有您的資料,但我們可以使用內置iris資料集看到它的作業原理:
x_vs_time(iris, Sepal.Length, Sepal.Width, NO[3])

或使用不同的運算式mtcars
x_vs_time(mtcars, wt, mpg, Si:NO[3]~drawdown)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450536.html
上一篇:為什么我的else/if陳述句在javascript中不能正常作業?
下一篇:獲取串列中的值的函式
