我正在尝试通过用户单击,鼠标移动和单击来绘制矩形.我的代码有两个问题.
首先,在绘制一个矩形后,会自动假设将绘制另一个矩形.其次,第二个矩形的起点是创建第一个矩形的最后一次点击.
我想详细说明这个问题的公认答案。
我正在考虑使用以下功能改进下面的最小闪亮应用程序(从接受的答案中提取):
input$foo),例如,来自下拉列表。为避免标签落在图像之外的边缘情况,标签应放置在其矩形内。布朗尼点数 1):下拉菜单可能会出现在光标旁边,就像这里完成的一样(代码在这里)。如果可能,下拉列表应该从 server.R 传递,而不是固定/硬编码。原因是根据某些用户输入,可能会显示不同的下拉列表。例如,我们可能有一个水果c('banana','pineapple','grapefruit')下拉菜单,一个动物下拉菜单c('raccoon','dog','cat'),等等。
# JS and CSS modified from: https://stackoverflow.com/a/17409472/8099834
css <- "
#canvas {
width:2000px;
height:2000px;
border: 10px solid transparent;
}
.rectangle {
border: 5px solid #FFFF00;
position: absolute;
}
"
js <-
"function initDraw(canvas) {
var mouse = {
x: 0,
y: 0,
startX: 0,
startY: 0
};
function setMousePosition(e) …Run Code Online (Sandbox Code Playgroud) 我希望能够在图像上绘制一个矩形。我当时正在考虑使用Shiny制作应用程序,但首先需要弄清楚如何在图像上绘制矩形?有人有任何想法或指示吗?
我的想法是我需要对图像进行分层,我的图像始终为640x640像素,所以我的想法是在图像顶部上方形成一个640x640的矩阵,让我选择“像素”以创建矩形的边界?
编辑:我走得更远,现在我可以使用以下代码在有光泽的图像上进行绘制。
由于这些链接:
现在,当我绘制更多矩形时,我需要绘制多个矩形并将结果保留在绘图上。有什么想法吗?
library(shiny)
ui <- basicPage(
plotOutput("plot1",
click = "plot_click",
dblclick = "plot_dblclick",
hover = "plot_hover",
brush = "plot_brush"
),
verbatimTextOutput("info")
)
server <- function(input, output) {
library(jpeg)
output$plot1 <- renderPlot({
img <- readJPEG("street_1.jpg", native = TRUE)
# plot(anImage)
plot(1:640, type='n')
rasterImage(img,1,1,640,640)
}, height = 640, width = 640)
output$info <- renderText({
xy_str <- function(e) {
if(is.null(e)) return("NULL\n")
paste0("x=", round(e$x, 1), " y=", round(e$y, 1), "\n")
}
xy_range_str <- function(e) {
if(is.null(e)) return("NULL\n")
paste0("xmin=", round(e$xmin, …Run Code Online (Sandbox Code Playgroud)