strwidth              package:graphics              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, respectively, of the
     given strings or mathematical expressions '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, font = NULL, vfont = NULL, ...)
     strheight(s, units = "user", cex = NULL, font = NULL, vfont = NULL, ...)

_A_r_g_u_m_e_n_t_s:

       s: a character or expression vector whose dimensions are to be
          determined.  Other objects are coerced by 'as.graphicsAnnot'.

   units: character indicating in which units 's' is measured; should
          be one of '"user"', '"inches"', '"figure"'; partial matching
          is performed.

     cex: numeric *c*haracter *ex*pansion factor; multiplied by
          'par("cex")' yields the final character size; the default
          'NULL' is equivalent to '1'.

font, vfont, ...: additional information about the font, possibly
          including the graphics parameter '"family"': see 'text'.

_D_e_t_a_i_l_s:

     Where an element of 's' is a multi-line string (that is, contains
     newlines '\n'), the width and height are of an enclosing rectangle
     of the string as plotted by 'text'.  The inter-line spacing is
     controlled by 'cex', 'par("lheight")' and the 'point size' (but
     not the actual font in use).

     Measurements in '"user"' units (the default) are only available
     after 'plot.new' has been called - otherwise an error is thrown.

_V_a_l_u_e:

     Numeric vector with the same length as 's', giving the width or
     height for each 's[i]'.  'NA' strings are given width and height 0
     (as they are not plotted).

_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, type="n")
     sw <- strwidth(str.ex); sw
     all.equal(sum(sw[1:4]), sw[5])
     #- since the last string contains the others

     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") * 72 # 'big points'
     table(shL) # all have same heights ...
     mean(shL)/par("cin")[2] # around 0.6

     (swL <- strwidth(all.lett, units="inches") * 72) # 'big points'
     split(all.lett, factor(round(swL, 2)))

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

     par(op)#- reset to previous setting

