Как заполнить одну точку 'pch' на графике двумя цветами? - PullRequest
7 голосов
/ 19 ноября 2011

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

data <- c(1,2,3)
plot(data, pch=c(23,18,23), cex=c(2.5,3,2.5))

Ответы [ 2 ]

11 голосов
/ 19 ноября 2011

Символы pch являются реальными символами шрифта, поэтому вы будете ограничены тем, что доступно в ваших шрифтах. Другая альтернатива - использовать примитивные команды построения, чтобы создавать свои собственные «символы». Это очень гибко, хотя при смешивании двух методов могут возникнуть проблемы с изменением размера и т. Д. Этот метод реализован в хорошем примере my.symbols():

require(TeachingDemos)

bwDiamond <- function() {
    plot.new()
    polygon(c(0, 0.5, 1, 0.5, 0), c(0.5, 0, 0.5, 1, 0.5), lty=1)
    polygon(c(0.25, 0.5, 1, 0.75, 0.25), c(0.25, 0, 0.5, 0.75, 0.25), col=1)
}

data <- c(1,2,3)

dev.new(width=4, height=4)
plot(data, type='n')
points(data[1:2], pch=c(23,18), cex=c(2.5,3))
my.symbols(data[3], data[3], symb=bwDiamond, symb.plots=TRUE, inches=0.22)

enter image description here

См. Также этот Q / A: Точечные символы в R

1 голос
/ 21 ноября 2011

@ JohnColby: Хорошо, вот способ нарисовать полутоновую точку круга, используя grid.semicircle из lodplot пакета. Это не такое аккуратное решение, как ваше с полигонами, но оно делает свою работу:

 require(lodplot)
 dev.new(width=4,height=4)
 plot(1:3,type="n")
 grid.semicircle(100,150,10,5)#left circle on plot below
 grid.semicircle(100,150,10,5,side=3,col=1)
 grid.semicircle(200,150,10,5,side=2)#right circle on plot below
 grid.semicircle(200,150,10,5,side=4,col=1)

Half-circles plot example

...