2017-02-11 10 views
0

Я использую g-файлы R-пакета. Я хочу добавить точку на картинке (.jpg).Добавить точку на изображении, построенное с помощью функции gimage (R package gWidgets)

Мой код:

require(jpeg) 
require(gWidgets) 

options(guiToolkit="RGtk2") 
w <- gwindow("test") 
gimage("yourpath.jpg",dirname="", container = w,toolkit=guiToolkit("RGtk2")) 
da <- [email protected]@widget 
callbackID <- gSignalConnect(da,"button-release-event", function 
(w,e,...) { 
# allocation <- w$GetAllocation() 
addHandlerClicked(da, handler = function(h,...) { 
}) 
xclick <- e$GetX() 
yclick <- e$GetY() 
print(xclick) 
print(yclick) 
points(xclick, yclick) 
pressed <<- FALSE 
return(TRUE) 
}) 

предупреждение:

plot.new has not been called yet 

Может кто-нибудь мне помочь? Благодаря

ответ

0

предупреждение:

plot.new не был вызван еще

Ну, это правда, не так ли? В приведенном выше коде нигде не создается сюжет (используя plot() или аналогичный).

Также в вашем коде я не вижу, где вы создаете «yourpath.jpg» - предположительно, это сюжет, который вы пытаетесь нарисовать.

На самом деле вы пытаетесь, по-видимому, смешивать изображение и сюжет. Если вы хотите включить R-график, то вам понадобится ggraphics.

Нечто подобное должно делать то, что вы, кажется, чтобы попытаться достичь:

library(gWidgets2) 
options(guiToolkit="RGtk2") 

# Generate some data 
xdata<-rnorm(n=5) 
ydata<-rnorm(n=5) 

gTest<-function(){ 

#Plotting function 
plotf<-function(...){ 
    plot(xdata,ydata) 
} 

# Function to add points 
.addPoint<-function(h,...){ 
    points(h$x,h$y,col="red") 
} 

win <- gwindow("Test") 
theplot<-ggraphics(cont=win) 

addHandlerClicked(theplot,handler=.addPoint) 

Sys.sleep(0.1) # Prevents error with "figure margins too large" 

plotf() 
} 

gTest() 

Обратите внимание, что, как написано, новые точки на графике (с points()), но на самом деле не сохраняются. Вам нужно будет сделать, например,

.addPoint<-function(h,...){ 
    points(h$x,h$y,col="red") 
    xdata<<-c(xdata,h$x) 
    ydata<<-c(ydata,h$y) 
} 

Здесь с глобальным назначением, которое может быть или не быть тем, что вам нужно; в основном <<- и глобальные переменные рассматриваются как плохая практика, но иногда это достаточно хорошо!

 Смежные вопросы

  • Нет связанных вопросов^_^