Редактирование атрибутов символов с помощью R::grid

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

Я понял большинство шагов. Моя проблема заключается в удалении контура символа и изменении символа.

library(grid)
n    <- 10
mins <- 10*runif(n)
maxs <- mins + 5*runif(n)
grid.newpage()
pushViewport(plotViewport(c(5.1, 4.1, 4.1, 2.1)))
vp <- dataViewport( xData = 1:n , yData = c(mins,maxs) , name = "theRegion")
pushViewport(vp)
grid.rect()
grid.points(1:n,mins , gp = gpar(pch=2,col="blue",fill="blue"))
grid.edit("dataSymbols",pch=2)
# --------------------------------
# Error in editDLfromGPath(gPath, specs, strict, grep, global, redraw) : 
#  'gPath' (dataSymbols) not found
# --------------------------------
grid.points(1:n,maxs,  gp = gpar(pch=2,col="yellow"))
grid.xaxis()
grid.yaxis()

for(i in 1:n){
  grid.lines(x = unit(c(i,i),"native"),
             y = unit(c(mins[i],maxs[i]),"native"), 
             gp = gpar(col = "green",lwd=6))
}

person user2105469    schedule 23.09.2016    source источник


Ответы (1)


Во-первых, пара вопросов:
1. pch не является параметром gpar — переместите pch за пределы gpar.
2. pch=2 имеет 'col', но не имеет 'fill'. Символ в форме треугольника с заливкой и столбцом равен pch=24.
3. Если вы хотите отредактировать именованный гроб, вам нужен гроб с таким именем.

library(grid)
n    <- 10
mins <- 10*runif(n)
maxs <- mins + 5*runif(n)
grid.newpage()
pushViewport(plotViewport(c(5.1, 4.1, 4.1, 2.1)))
vp <- dataViewport(xData = 1:n, yData = c(mins,maxs), name = "theRegion")
pushViewport(vp)
grid.rect()

# Symbols are triangles with blue border and yellow fill.
# Note the grob's name
grid.points(1:n, mins, pch = 24, gp = gpar(col = "blue", fill = "yellow"), name = "dataSymbols")

# Edit that grob so that the symbols do not have a border
grid.edit("dataSymbols", gp = gpar(col = NA))

# Edit that grob so that the symbol changes to pch = 2
grid.edit("dataSymbols", pch = 2)
# OOPS! The symbols have only a fill assigned, but pch = 2 does not have a fill 

# So, give the symbols a blue border
grid.edit("dataSymbols", gp = gpar(col = "blue"))
person Sandy Muspratt    schedule 06.01.2017