

strwidth {base}                              R Documentation

_P_l_o_t_t_i_n_g _D_i_m_e_n_s_i_o_n_s _o_f _C_h_a_r_a_c_t_e_r _S_t_r_i_n_g_s _a_n_d _M_a_t_h _E_x_p_r_e_s_-
_s_i_o_n_s

_D_e_s_c_r_i_p_t_i_o_n_:

     These functions compute the width or height, respec-
     tively, of the given strings or mathematical expres-
     sions `s[i]' on the current plotting device in user
     coordinates, inches or as fraction of the figure width
     `par("fin")'.

_U_s_a_g_e_:

     strwidth(s, units = "user", cex = NULL)
     strheight(s, units = "user", cex = NULL)

_A_r_g_u_m_e_n_t_s_:

       s: character vector or `expression's whose string
          widths in plotting units are to be determined.

   units: character indicating in which units `s' is mea-
          sured; must be one of `"user"', `"inches"', `"fig-
          ure"' .

     cex: character expansion to which is applies. Per
          default, the current `par("cex")' is used.

_V_a_l_u_e_:

     integer vector with the same length as `s', giving the
     width for each `s[i]'.

_S_e_e _A_l_s_o_:

     `text', `nchar'

_E_x_a_m_p_l_e_s_:

     str.ex <- c("W","w","I",".","WwI.")
     op <- par(pty='s'); plot(1:100,1:100); par('usr')
     sw <- strwidth(str.ex); sw
     sum(sw[1:4] == sw[5])#- since the last string contains the others
     sw / strwidth(str.ex, cex = .5)
     # between 1.5 and 4.2 (!),  font dependent

     sw.i <- strwidth(str.ex, "inches"); 25.4 * sw.i # width in [mm]
     unique(sw / sw.i)
     # constant factor: 1 value
     mean(sw.i / strwidth(str.ex, "fig")) / par('fin')[1] # = 1: are the same

     ## See how letters fall in classes -- depending on graphics device and font!
     all.lett <- c(letters, LETTERS)
     shL <- strheight(all.lett, units = "inches")
     table(shL)# all have same heights ..
     mean(shL) / par("cin")[2] # should be 1 (exactly?)

     swL <- strwidth(all.lett)
     swL <- 3 * swL / min(swL)
     all(swL == round(swL))#- TRUE !
     swL <- as.integer(swL)
     n.classes <- length(tL <- table(swL)); tL
     iL <- order(swL)
     structure(swL[iL], names = all.lett[iL])
     lett.classes <- structure(vector("list", n.classes), names= names(tL))
     for(i in 1:n.classes)
       lett.classes[[i]] <- all.lett[swL == as.numeric(names(tL)[i])]
     lett.classes

     sumex <- expression(sum(x[i], i=1,n), e^{i * pi} == -1)
     strwidth(sumex)
     strheight(sumex)

     rm(sumex); par(op)#- reset to previous setting

