[英]Handler function for radio button created with gradio function in R package gWidgets
[英]Add a point on an image plotted with the function gimage (R package gWidgets)
我正在使用R包gWidgets。 我想在圖片(.jpg)上添加一個點。
我的代碼是:
require(jpeg)
require(gWidgets)
options(guiToolkit="RGtk2")
w <- gwindow("test")
gimage("yourpath.jpg",dirname="", container = w,toolkit=guiToolkit("RGtk2"))
da <- w@widget@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
有人可以幫我嗎? 謝謝
警告:
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)
}
在這里進行全局分配,這可能是您可能需要的,也可能不是。 大多數<<-
和全局變量都被認為是不好的做法,但有時就足夠了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.