Как изменить цвет текста на графике?

#r #plot

#r #график

Вопрос:

Есть ли какая-либо функция для изменения цвета выделенного текста, чтобы я мог отображать пользовательские цвета текста, которые отображаются в любом месте графика?

Просто пример, если я хочу изменить шрифт «-Log10adjustedP», я могу использовать bquote

 bquote(~-Log[10] ~ adjusted~italic(P))
 

Есть ли color эквивалент этому?

Комментарии:

1. Я думаю, что с базовой графикой это своего рода все или ничего. Если вы используете сетчатую графику, вы можете ознакомиться с этим новым пакетом: wilkelab.org/gridtext

2. @MrFlick Остерегайтесь phantom 😉

Ответ №1:

Альтернативный способ — использовать mtext .

 plot(1:20)
mtext(~-Log[10] ~ adjusted~italic, col = "blue")
 

простой пример mtext с цветом

Ответ №2:

Использование phantom which не выводит текст на экран, но оставляет для него место. Это позволяет нам использовать послойный подход, который является довольно гибким.

 plot(dnorm(seq(-5, 5, .01)), type="l")

text(0, .35, bquote(.("Lorem ")*phantom(.("ipsum"))), col=1, adj=0)
text(0, .35, bquote(phantom(.("Lorem "))*"ipsum"), col=2, adj=0)
text(0, .35, bquote(phantom(.("Lorem ipsum "))*"dolor"), col=3, adj=0)
text(0, .35, bquote(phantom(.("Lorem ipsum dolor "))*"sit "), col=4, adj=0)
text(0, .35, bquote(phantom(.("Lorem ipsum dolor sit "))*"amet."), col=5, adj=0)

text(650, .35, bquote(~-Log~phantom(.[10])~phantom(adjusted~italic(P))), col="#000000", adj=0)
text(650, .35, bquote(~phantom(-Log)[10]~phantom(adjusted~italic(P))), col="#ff0000", adj=0)
text(650, .35, bquote(~phantom(-Log[10])~adjusted~phantom(italic(P))), col="#00ff00", adj=0)
text(650, .35, bquote(~phantom(-Log[10]~adjusted)~italic(P)), col="#0000ff", adj=0)
 

Обратите внимание, что если последующие буквы длиннее вверх или вниз по сравнению с первым phantom необработанным текстом, нам лучше включить phantom их, иначе символы будут смещены:

 text(75, .2, bquote("c"*phantom("ol")), col=1, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("c")*"o"*phantom("l")), col=2, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("co")*"l"), col=3, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("col")*"o"), col=4, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("colo")*"r"), col=5, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("color")*"f"), col=6, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("colorf")*"u"), col=7, adj=0, font=2, cex=1.5)
text(75, .2, bquote(phantom("colorfu")*"l"), col=8, adj=0, font=2, cex=1.5)
 

Для title этого существует удобная функция ContourFunctions::multicolor.title , которая также используется внутри phantom .

 ContourFunctions::multicolor.title(c("This ","could ", "be ", "your ", "title"), 1:5)
 

введите описание изображения здесь