2017-02-11 7 views
0

私はRパッケージgWidgetsを使用しています。 画像(.jpg)にポイントを追加したいと思います。関数gimage(Rパッケージ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が必要です。書かれたとして、新しいポイントは(points()で)プロットが、実際に保存されていないことを

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

注:そのような

何かがあなたがしようと達成するように見える何をすべき。

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

ここでは、グローバル割り当てが必要な場合もあれば、必要でない場合もあります。ほとんどは<<-とグローバル変数は悪い習慣とみなされますが、時には十分です!

関連する問題