imageMap-methods         package:geneplotter         R Documentation

_W_r_i_t_e _a_n _H_T_M_L _I_M_G _t_a_g _t_o_g_e_t_h_e_r _w_i_t_h _a _M_A_P _i_m_a_g_e _m_a_p.

_D_e_s_c_r_i_p_t_i_o_n:

     Write an HTML IMG tag together with a MAP image map.

_U_s_a_g_e:

       ## S4 method for signature 'matrix, connection, list,
       ##   character':
       imageMap(object, con, tags, imgname)

_A_r_g_u_m_e_n_t_s:

  object: Matrix with 4 columns, specifying the coordinates of the
          mouse-sensitive region . Each row specifies the corners of a 
          rectangle within the image, in the following order: (left x,
          lower y, right x, upper y). Note that the point (x=0, y=0) is
           at the left upper side of the image.

     con: Connection to which the image map is written.

    tags: Named list whose elements are named character vectors. Names
          must correspond to node names in 'object'. See details.

 imgname: Character. Name of the image file (for example PNG file) that
          contains the plot.

_D_e_t_a_i_l_s:

     The most important tags are 'TITLE', 'HREF', and 'TARGET'. If the
     list 'tags' contains an element with name 'TITLE', then this must
     be a named character vector containing the tooltips that are to be
     displayed when the mouse moves over a node. The names of the nodes
     are specified in the 'names' attribute  of the character vector
     and must match those of 'object'.

     Similarly, 'HREF' may be used to specify hyperlinks that the
     browser can follow when the mouse clicks on a node, and 'TARGET'
     to specify the target browser window.

     Currently, only rectangular regions are implemented; the actual
     shape of the nodes as specified in 'object' is ignored. Also, tags
     for edges of the graph are currently not supported.

     This function is typically used with the following sequence of
     steps:

        1.  generate your graphic and save it as a bitmap file, e.g.
           using the 'jpeg', 'png', or 'bitmap' devices. At this stage,
           you also need to figure out the pixel coordinates of the
           interesting regions within your graphic. Since the mapping
           between device coordinates and pixel coordinates is not
           obvious, this may be a little tricky. See the examples
           below, and for a more complex example, see the source code
           of the function 'plotPlate'.

        2.  open an HTML page for writing and write HTML header, e.g.
           using the 'openHtmlPage' function.

        3.  Call the 'imageMap' function.

        4.  Optionally, write further text into the HTML connection.

        5.  Close HTML file, e.g. using the 'closeHtmlPage' function.

_V_a_l_u_e:

     The function is called for its side effect, which is writing text
     into the connection 'con'.

_A_u_t_h_o_r(_s):

     Wolfgang Huber <URL: http://www.dkfz.de/abt0840/whuber>

_S_e_e _A_l_s_o:

     'plotPlate',  'writeLines'

_E_x_a_m_p_l_e_s:

     f1  = paste(tempfile(), ".html", sep="")
     f2  = paste(tempfile(), ".html", sep="")
     fpng = tempfile()

     if(capabilities()["png"] && interactive()) {
       ## create the image
       colors = c("#E41A1C","#377EB8","#4DAF4A","#984EA3","#FF7F00","#FFFF33","#A65628","#F781BF","#999999")
       width  = 512
       height = 256
       png(fpng, width=width, height=height)
       par(mai=rep(0,4))
       plot(0,xlim=c(0,width-1),ylim=c(0,height-1),xaxs="i",yaxs="i",type="n",bty="n")
       cx=floor(runif(100)*(width-11))
       cy=floor(runif(100)*(height-11))
       coord=cbind(cx, cy, cx+10, cy+10)
       rect(coord[,1], height-coord[,2], coord[,3], height-coord[,4],
            col=sample(colors, 100, replace=TRUE))
       text(width/2, height-3, "Klick me!", adj=c(0.5, 1), font=2)
       dev.off()

       ## create the frame set
       cat("<html><head><title>Hello world</title></head>\n",
           "<frameset rows=\"280,*\" border=\"0\">\n",
           "<frame name=\"banner\" src=\"file://", f2, "\">\n",
           "<frame name=\"main\" scrolling=\"auto\">",
           "</frameset>", sep="",file=f1)

       ## create the image map
       href  =sample(c("www.bioconductor.org", "www.r-project.org"),nrow(coord),replace=TRUE)
       title =sample(as.character(packageDescription("geneplotter")),nrow(coord),replace=TRUE)
       con = file(f2, open="w")
       imageMap(coord, con,
         list(HREF=paste("http://", href, sep=""),
              TITLE=title, TARGET=rep("main", nrow(coord))), fpng)
       close(con)

       cat("Now have a look at file ", f1, " with your browser.\n", sep="")
     }

