Как я могу включить пользовательские символы точек в легенду - PullRequest
0 голосов
/ 04 июня 2018

Рассмотрим следующие данные / график, которые работают, так как я присваиваю только числовые значения pch.

plot(1:20, col='blue', pch=20); 
points(2:22, col='red', pch='+', cex=2)
points(4:24, col='green', pch=15)

legend('bottomright',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=T, cex=0.8,
       pch=c(20,20,15), bg='white')

Но когда я включаю символьное значение, он все равно отображает легенду, но использует неправильные типы точек .

legend('bottom',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=F, cex=0.8,
       pch=c(20,'+',20), bg='white')

И при использовании только символьных значений легенда снова верна:

legend('bottomleft',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=F, cex=0.8,
       pch=c('!','+','*'), bg='white')

Легенда в середине - это проблема. Как я могу нарисовать легенду с правильными типами точек?

Я знаю, что могу использовать pch=3 для символа "+", но что, если я пытаюсь построить ""!»вместо символа?plot

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Из ?points можно передать код ASCii символу, который вы хотите построить.Для + код ASCii равен 43.

plot(1:20, col='blue', pch=20); 
points(2:22, col='red', pch='+', cex=2)
points(4:24, col='green', pch=15)

legend('bottomright',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=T, cex=0.8,
       pch=c(20,43,15), bg='white')

Ниже приведены допустимые значения для pch:

NA_integer_: без символа.
0:18: S-совместимыйвекторные символы.
19:25: дополнительные R векторных символов.
26:31: не используются (и игнорируются).
32: 127: символы ASCII.
128: 255 собственных символов только в одном-байтовый язык и для шрифта символа.(128: 159 используются только в Windows.)

0 голосов
/ 04 июня 2018

Вы передаете числовой вектор или символы, которые хотите использовать в качестве символов.Вы не можете смешать два, как пытаетесь сделать, так как вектор может иметь только один тип данных - в вашем случае он приводит все значения в векторе к character.

Ниже приведено то, что выдолжно быть указано:

legend('bottomright',c('Blue','Red', 'Green'),   
   col=c("blue", "red", "green"), horiz=T, cex=0.8,
   pch=list(20,3,15), bg='white')

РЕДАКТИРОВАТЬ: Поскольку вы хотите конкретно символ !, вам придется искать значение pch этого.В этом случае это pch = 33

...