Greek letters in legend in R

大憨熊 提交于 2019-12-12 13:30:43

问题


I want to have three curves on the same plot with different parameter alpha.

curve(sin(x), from = 1, to = 3, lty = 1, ylim = c(-1, 1))
curve(sin(2 * x), add = TRUE, lty = 2)    
curve(sin(3 * x), add = TRUE, lty = 3)
legend("topright", legend = expression(paste(alpha, " = ", c(1, 2, 3))), lty = 1:3)

In the legend, I want to have three lines with alplha = 1, alpha = 2, alpha = 3. How do I make it correct?


回答1:


The better, looped answer comes from here and user20650.

Solution with sapply

The expression function is quite tricky but in conjunction with substitute you can use sapply to loop:

curve(sin(x), from = 1, to = 3, lty = 1, ylim = c(-1, 1))
curve(sin(2 * x), add = TRUE, lty = 2)    
curve(sin(3 * x), add = TRUE, lty = 3)
legend("topright",
       legend = sapply(1:3, function(x) as.expression(substitute(alpha == B,
                                                                 list(B = as.name(x))))),
       lty = 1:3)

Simple Fix

curve(sin(x), from = 1, to = 3, lty = 1, ylim = c(-1, 1))
curve(sin(2 * x), add = TRUE, lty = 2)    
curve(sin(3 * x), add = TRUE, lty = 3)
legend("topright", legend = c(expression(paste(alpha, " = ", 1)),
                              expression(paste(alpha, " = ", 2)),
                              expression(paste(alpha, " = ", 3))), lty = 1:3)


来源:https://stackoverflow.com/questions/30540028/greek-letters-in-legend-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!