2017-02-11 1 views
0

Ich verwende das R-Paket gWidgets. Ich möchte einen Punkt auf einem Bild hinzufügen (.jpg).Fügen Sie einen Punkt auf ein Bild mit der Funktion gimage (R-Paket gWidgets)

Mein Code ist:

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) 
}) 

Warnung:

plot.new has not been called yet 

mir jemand helfen könnte? Dank

Antwort

0

Warnung:

plot.new wurde noch nicht genannt

Nun, das stimmt nicht wahr? Im obigen Code wird nirgends ein Plot erstellt (mit plot() oder ähnlichem).

Auch in Ihrem Code kann ich nicht sehen, wo Sie "yourpath.jpg" erstellen - vermutlich ist es die Handlung, die Sie zeichnen möchten.

Tatsächlich versuchen Sie anscheinend, ein Bild und eine Handlung zu mischen. Wenn Sie ein R-Diagramm einfügen möchten, benötigen Sie eine Grafik.

So etwas sollte tun, was Sie zu versuchen, scheinen und zu erreichen:

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() 

Beachten Sie, dass wie geschrieben, neue Punkte aufgetragen sind (mit points()), aber nicht tatsächlich gespeichert. Sie müssten zum Beispiel

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

Hier mit einer globalen Zuordnung, das kann oder nicht sein, was Sie brauchen; meist <<- und globale Variablen gelten als schlechte Praxis, aber manchmal ist es gut genug!

Verwandte Themen