Chapter 3 Standard graphical formatting in R

Introduction plot() function:

plot() function is generic function for plotting of R objects in basic graphs.

  • par() : the default settings (rows x columns) for plots.

  • plot() : the main function.

  • There are many other plot functions which are specific to some tasks such as hist(), boxplot(), etc. Most of them take the same arguments as the plot() function.

Formula:

plot(x, y, type=“p”)

  • x and y: the coordinates of points to plot

  • type:
    • “p” for points,

    • “l” for lines,

    • “b” for both,

    • “c” for the lines part alone of “b”,

    • “o” for both ‘overplotted’,

    • “h” for ‘histogram’ like (or ‘high-density’) vertical lines,

    • “s” for stair steps,

    • “S” for other steps, see ‘Details’ below,

    • “n” for no plotting.

Example:

par(mfrow=c(3,3), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x<-1:5; y=x*x
plot(x, y, type="p",col="blue")
plot(x, y, type="l",col="bisque")
plot(x,y, type="b",col="green")
plot(x, y, type="c",col="red")
plot(x, y, type="o",col="pink")
plot(x,y, type="h",col="orange")
plot(x, y, type="s",col="purple")
plot(x, y, type="S",col="black")
plot(x,y, type="h",col="blue")

For more color type used the sintaks color()

More info about plot() go to RDocumentation here

Titles:

  • main="test": main titles

  • sub="text": subtitle

  • xlab="test": the name of the x axis

  • ylab="test": the name of the y axis.

====Main title and axis labels====

x<-1:5; y=x*x
plot(x, y, type="p",col="blue",main="Exponential",sub="Example",ylab="Y Axis",xlab="X Axis")

====Title colors====

x<-1:5; y=x*x
plot(x, y, type="p",col="#B7F200",main="Exponential",sub="Example",ylab="Y Axis",xlab="X Axis",
     col.main="red", col.lab="blue", col.sub="green")

====The font style====

The possible values for the font style are :

1: normal text 2: bold 3: italic 4: bold and italic 5 : Symbol font

x<-1:5; y=x*x
plot(x, y, type="p",col="blue",main="Exponential",sub="Example",ylab="Y Axis",xlab="X Axis",
     font.main=1, font.lab=2, font.sub=3
     )

====The font size====

x<-1:5; y=x*x
plot(x, y, type="p",col="blue",main="Exponential",sub="Example",ylab="Y Axis",xlab="X Axis",
     cex.main=4, cex.lab=1.5, cex.sub=0.8
     )

====Use the title() function====

x<-1:5; y=x*x
plot(x, y, type="p")
title(main = "Main title", sub = "Sub-title",
      xlab = "X", ylab = "Y",
      cex.main = 2,   font.main= 4, col.main= "red",
      cex.sub = 0.75, font.sub = 2, col.sub = "green",
      col.lab ="darkblue"
      )

====Customize the titles using par() function====

par(
  # Change the colors
  col.main="red", col.lab="blue", col.sub="black",
  # Titles in italic and bold
  font.main=4, font.lab=4, font.sub=4,
  # Change font size
  cex.main=2, cex.lab=1.7, cex.sub=1.2
  )
plot(x, y, type="p",
     main="TMain title",
        xlab="X axis",
        ylab="Y axis",
        sub="Sub title"
     )

Legend:

legend(): the position can be “bottomleft”, “bottomright”, “topleft”, “topright” or exact coordinates.

====R legend function====

Formula:

legend(x, y=NULL, legend, fill, col, bg)

Example:

# Generate example data
x<-1:5; y1=x*x; y2=3*y1
plot(x, y1, type="b", pch=19, col="#FFD900", xlab="x", ylab="y")
# Add a line
lines(x, y2, pch=18, col="#8C6DD7", type="b", lty=2)
# Add a legend
legend(1, 20, legend=c("Line 1", "Line 2"),
       col=c("#FFD900", "#8C6DD7"), lty=1:2, cex=0.8)

Create R function to avoid repeating graphs code:

# Generate example data
make_plot<-function(){
x<-1:5; y1=x*x; y2=3*y1
plot(x, y1, type="b", pch=19, col="red", xlab="x", ylab="y")
# Add a line
lines(x, y2, pch=18, col="blue", type="b", lty=2)
# Add a legend
legend(1, 20, legend=c("Line 1", "Line 2"),
       col=c("red", "blue"), lty=1:2, cex=0.8)
}
make_plot()

====Title, text font and background color of the legend box====

  • title: The title of the legend
  • text.font: an integer specifying the font style of the legend text; possible values are :
    • 1: normal
    • 2: bold
    • 3: italic
    • 4: bold and italic
    • bg: background color of the legend box
make_plot()

# Add a legend to the plot
legend(1,20, legend=c("Line 1", "Line 2"),
       col=c("red", "blue"), lty=1:2, cex=0.8,
       title="Line types", text.font=4, bg="lightblue")

====Border of the legend box====

  • box.lty: modify the line type

  • box.lwd: modify the width

  • box.col: modify the color

par(mfrow=c(2,1), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
# Remove legend border using box.lty = 0
make_plot()
legend(1,20, legend=c("Line 1", "Line 2"),
       col=c("red", "blue"), lty=1:2, cex=0.8,
       box.lty=0)
# Change the border
make_plot()
legend(1,20, legend=c("Line 1", "Line 2"),
       col=c("red", "blue"), lty=1:2, cex=0.8,
       box.lty=2, box.lwd=2, box.col="green")

====The legend position by keywords====

Using the following keywords : “bottomright”, “bottom”, “bottomleft”, “left”, “topleft”, “top”, “topright”, “right” and “center”.

par(mfrow=c(2,1), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
# Remove legend border using box.lty = 0
make_plot()
legend("center", legend=c("Line 1", "Line 2"),
       col=c("red", "blue"),box.lty=0)
make_plot()
legend("topright", legend=c("Line 1", "Line 2"),
       col=c("red", "blue"),
       box.lty=0)

Text:

text() and mtext() R functions can be used To add a text to a plot.

====Texts within the graph====

Formula:

text(x, y, labels)

Example:

d<-head(mtcars)
plot(d[,'wt'], d[,'mpg'], 
     main="Milage vs. Car Weight\n~~~~~~~~~~~~~~~~~~~",
      xlab="Weight", ylab="Miles/(US) gallon",
      pch=19, col="darkgreen")
text(d[,'wt'], d[,'mpg'],  row.names(d),
     cex=0.85, pos=2,col="red")

====Text in the margins of the graph====

  • text : the text to be written
  • side : an integer specifying the side of the plot; Possible values are :
  • 1: bottom
  • 2: left
  • 3: top
  • 4: right
plot(1:7, 1:7, 
     main="mtext(...) examples",col="blue")
mtext("Magic function", side=4)

====Mathematical annotation within the graph====

Example:

plot(1:7, 1:7, 
     main="text(...) examples",col="black")
text(2, 4, expression(hat(beta) == (X^t * X)^{-1} * X^t * y))
text(2, 6, expression(bar(x) == sum(frac(x[i], n), i==1, n)))

Types of Plot:

An option for plot types can be:

type: * “p” for points,

  * "l" for lines,

  * "b" for both,

  * "c" for the lines part alone of "b",

  * "o" for both 'overplotted',

  * "h" for 'histogram' like (or 'high-density') vertical lines,

  * "s" for stair steps,

  * "S" for other steps, see 'Details' below,

  * "n" for no plotting.
x <- rnorm(100) 
par(mfrow = c(2,2))
plot(x, type = "p", main = "points", ylab = "", xlab = "",col="red")
plot(x, type = "o", main = "overplotted", ylab = "", xlab = "",col="green")
plot(x, type = "h", main = "histogram", ylab = "", xlab = "",col="blue")
plot(x, type = "S", main = "steps", ylab = "", xlab = "",col="orange")

Axis:

====Add an axis to a plot====

Formula:

axis(side, at=NULL, labels=TRUE)

Side :

  • 1: below

  • 2: left

  • 3: above

  • 4: right

  • at: The position

  • labels: Texts for tick-mark labels.

Example :

par(mfrow=c(3,1), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x<-1:3; y=x*x
# Example 1
plot(x, y, axes = FALSE)
axis(side=1, at = 1:3, labels=LETTERS[1:3])
axis(2)
# Example 2
plot(x, y, axes = FALSE)
axis(side=1, at=1:3, labels=LETTERS[1:3])
axis(2)
box() #- To make it look like "usual" plot
#Example3:
plot(x, y, pch=18, col="red", type="b",
     frame=FALSE, xaxt="n") # Remove x axis
axis(1, 1:4, LETTERS[1:4], col.axis="blue")
axis(3, col = "darkgreen", lty = 2, lwd = 0.5)
axis(4, col = "violet", col.axis = "dark violet", lwd = 2)

====Axis scale====

  • xlim: the limit of x axis; format : xlim = c(min, max)

  • ylim: the limit of y axis; format: ylim = c(min, max)

Transformation to log scale:

  • log = “x”

  • log = “y”

  • log = “xy”*

Example:

par(mfrow=c(3,1), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x<-1:20; y=x*x
# Simple graph
plot(x, y,col="blue")
# Enlarge the scale
plot(x, y, xlim=c(1,15), ylim=c(1,150),col="blue")
# Log scale
plot(x, y, log="y",col="blue")

====Axes fonts====

Remove them with axes=FALSE:

par(mfrow=c(2,1), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x1<-1:10
x2<-11:20
plot(x1,x2,axes=FALSE)
plot(x1,x2,axes=FALSE)
axis(1,col="red",col.axis="blue",font.axis=3)
axis(2,col="red",col.axis="blue",font.axis=2,las=2)

====Axes positions====

Use las function to specified the style of axis labels:

  • 0 : always parallel to the axis [default]

  • 1 : always horizontal

  • 2 : always perpendicular to the axis

  • 3 : always vertical

x1 <- rnorm(150)
par(mfrow = c(2,2))
plot(x1, las = 0, main = "las = 0", sub = "always parallel to the axis", xlab = "", ylab = "",col="blue")
plot(x1, las = 1, main = "las = 1", sub = "always horizontal", xlab = "", ylab = "",col="blue") 
plot(x1, las = 2, main = "las = 2", sub = "always perpendicular to the axis", xlab = "", ylab = "",col="blue")
plot(x1, las = 3, main = "las = 3", sub = "always vertical", xlab = "", ylab = "",col="blue")

Margins par():

Formula:

par(mfrow=c(2,1), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0)) # set up the graphics

See ?par to learn more about the topic.

Colors:

Use by name (e.g col = “red”) or as a hexadecimal RGB triplet (such as col = “#FFCC00”).

====Default color in R====

colors() # list the r colors
##   [1] "white"                "aliceblue"            "antiquewhite"        
##   [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
##   [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
##  [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
##  [13] "azure"                "azure1"               "azure2"              
##  [16] "azure3"               "azure4"               "beige"               
##  [19] "bisque"               "bisque1"              "bisque2"             
##  [22] "bisque3"              "bisque4"              "black"               
##  [25] "blanchedalmond"       "blue"                 "blue1"               
##  [28] "blue2"                "blue3"                "blue4"               
##  [31] "blueviolet"           "brown"                "brown1"              
##  [34] "brown2"               "brown3"               "brown4"              
##  [37] "burlywood"            "burlywood1"           "burlywood2"          
##  [40] "burlywood3"           "burlywood4"           "cadetblue"           
##  [43] "cadetblue1"           "cadetblue2"           "cadetblue3"          
##  [46] "cadetblue4"           "chartreuse"           "chartreuse1"         
##  [49] "chartreuse2"          "chartreuse3"          "chartreuse4"         
##  [52] "chocolate"            "chocolate1"           "chocolate2"          
##  [55] "chocolate3"           "chocolate4"           "coral"               
##  [58] "coral1"               "coral2"               "coral3"              
##  [61] "coral4"               "cornflowerblue"       "cornsilk"            
##  [64] "cornsilk1"            "cornsilk2"            "cornsilk3"           
##  [67] "cornsilk4"            "cyan"                 "cyan1"               
##  [70] "cyan2"                "cyan3"                "cyan4"               
##  [73] "darkblue"             "darkcyan"             "darkgoldenrod"       
##  [76] "darkgoldenrod1"       "darkgoldenrod2"       "darkgoldenrod3"      
##  [79] "darkgoldenrod4"       "darkgray"             "darkgreen"           
##  [82] "darkgrey"             "darkkhaki"            "darkmagenta"         
##  [85] "darkolivegreen"       "darkolivegreen1"      "darkolivegreen2"     
##  [88] "darkolivegreen3"      "darkolivegreen4"      "darkorange"          
##  [91] "darkorange1"          "darkorange2"          "darkorange3"         
##  [94] "darkorange4"          "darkorchid"           "darkorchid1"         
##  [97] "darkorchid2"          "darkorchid3"          "darkorchid4"         
## [100] "darkred"              "darksalmon"           "darkseagreen"        
## [103] "darkseagreen1"        "darkseagreen2"        "darkseagreen3"       
## [106] "darkseagreen4"        "darkslateblue"        "darkslategray"       
## [109] "darkslategray1"       "darkslategray2"       "darkslategray3"      
## [112] "darkslategray4"       "darkslategrey"        "darkturquoise"       
## [115] "darkviolet"           "deeppink"             "deeppink1"           
## [118] "deeppink2"            "deeppink3"            "deeppink4"           
## [121] "deepskyblue"          "deepskyblue1"         "deepskyblue2"        
## [124] "deepskyblue3"         "deepskyblue4"         "dimgray"             
## [127] "dimgrey"              "dodgerblue"           "dodgerblue1"         
## [130] "dodgerblue2"          "dodgerblue3"          "dodgerblue4"         
## [133] "firebrick"            "firebrick1"           "firebrick2"          
## [136] "firebrick3"           "firebrick4"           "floralwhite"         
## [139] "forestgreen"          "gainsboro"            "ghostwhite"          
## [142] "gold"                 "gold1"                "gold2"               
## [145] "gold3"                "gold4"                "goldenrod"           
## [148] "goldenrod1"           "goldenrod2"           "goldenrod3"          
## [151] "goldenrod4"           "gray"                 "gray0"               
## [154] "gray1"                "gray2"                "gray3"               
## [157] "gray4"                "gray5"                "gray6"               
## [160] "gray7"                "gray8"                "gray9"               
## [163] "gray10"               "gray11"               "gray12"              
## [166] "gray13"               "gray14"               "gray15"              
## [169] "gray16"               "gray17"               "gray18"              
## [172] "gray19"               "gray20"               "gray21"              
## [175] "gray22"               "gray23"               "gray24"              
## [178] "gray25"               "gray26"               "gray27"              
## [181] "gray28"               "gray29"               "gray30"              
## [184] "gray31"               "gray32"               "gray33"              
## [187] "gray34"               "gray35"               "gray36"              
## [190] "gray37"               "gray38"               "gray39"              
## [193] "gray40"               "gray41"               "gray42"              
## [196] "gray43"               "gray44"               "gray45"              
## [199] "gray46"               "gray47"               "gray48"              
## [202] "gray49"               "gray50"               "gray51"              
## [205] "gray52"               "gray53"               "gray54"              
## [208] "gray55"               "gray56"               "gray57"              
## [211] "gray58"               "gray59"               "gray60"              
## [214] "gray61"               "gray62"               "gray63"              
## [217] "gray64"               "gray65"               "gray66"              
## [220] "gray67"               "gray68"               "gray69"              
## [223] "gray70"               "gray71"               "gray72"              
## [226] "gray73"               "gray74"               "gray75"              
## [229] "gray76"               "gray77"               "gray78"              
## [232] "gray79"               "gray80"               "gray81"              
## [235] "gray82"               "gray83"               "gray84"              
## [238] "gray85"               "gray86"               "gray87"              
## [241] "gray88"               "gray89"               "gray90"              
## [244] "gray91"               "gray92"               "gray93"              
## [247] "gray94"               "gray95"               "gray96"              
## [250] "gray97"               "gray98"               "gray99"              
## [253] "gray100"              "green"                "green1"              
## [256] "green2"               "green3"               "green4"              
## [259] "greenyellow"          "grey"                 "grey0"               
## [262] "grey1"                "grey2"                "grey3"               
## [265] "grey4"                "grey5"                "grey6"               
## [268] "grey7"                "grey8"                "grey9"               
## [271] "grey10"               "grey11"               "grey12"              
## [274] "grey13"               "grey14"               "grey15"              
## [277] "grey16"               "grey17"               "grey18"              
## [280] "grey19"               "grey20"               "grey21"              
## [283] "grey22"               "grey23"               "grey24"              
## [286] "grey25"               "grey26"               "grey27"              
## [289] "grey28"               "grey29"               "grey30"              
## [292] "grey31"               "grey32"               "grey33"              
## [295] "grey34"               "grey35"               "grey36"              
## [298] "grey37"               "grey38"               "grey39"              
## [301] "grey40"               "grey41"               "grey42"              
## [304] "grey43"               "grey44"               "grey45"              
## [307] "grey46"               "grey47"               "grey48"              
## [310] "grey49"               "grey50"               "grey51"              
## [313] "grey52"               "grey53"               "grey54"              
## [316] "grey55"               "grey56"               "grey57"              
## [319] "grey58"               "grey59"               "grey60"              
## [322] "grey61"               "grey62"               "grey63"              
## [325] "grey64"               "grey65"               "grey66"              
## [328] "grey67"               "grey68"               "grey69"              
## [331] "grey70"               "grey71"               "grey72"              
## [334] "grey73"               "grey74"               "grey75"              
## [337] "grey76"               "grey77"               "grey78"              
## [340] "grey79"               "grey80"               "grey81"              
## [343] "grey82"               "grey83"               "grey84"              
## [346] "grey85"               "grey86"               "grey87"              
## [349] "grey88"               "grey89"               "grey90"              
## [352] "grey91"               "grey92"               "grey93"              
## [355] "grey94"               "grey95"               "grey96"              
## [358] "grey97"               "grey98"               "grey99"              
## [361] "grey100"              "honeydew"             "honeydew1"           
## [364] "honeydew2"            "honeydew3"            "honeydew4"           
## [367] "hotpink"              "hotpink1"             "hotpink2"            
## [370] "hotpink3"             "hotpink4"             "indianred"           
## [373] "indianred1"           "indianred2"           "indianred3"          
## [376] "indianred4"           "ivory"                "ivory1"              
## [379] "ivory2"               "ivory3"               "ivory4"              
## [382] "khaki"                "khaki1"               "khaki2"              
## [385] "khaki3"               "khaki4"               "lavender"            
## [388] "lavenderblush"        "lavenderblush1"       "lavenderblush2"      
## [391] "lavenderblush3"       "lavenderblush4"       "lawngreen"           
## [394] "lemonchiffon"         "lemonchiffon1"        "lemonchiffon2"       
## [397] "lemonchiffon3"        "lemonchiffon4"        "lightblue"           
## [400] "lightblue1"           "lightblue2"           "lightblue3"          
## [403] "lightblue4"           "lightcoral"           "lightcyan"           
## [406] "lightcyan1"           "lightcyan2"           "lightcyan3"          
## [409] "lightcyan4"           "lightgoldenrod"       "lightgoldenrod1"     
## [412] "lightgoldenrod2"      "lightgoldenrod3"      "lightgoldenrod4"     
## [415] "lightgoldenrodyellow" "lightgray"            "lightgreen"          
## [418] "lightgrey"            "lightpink"            "lightpink1"          
## [421] "lightpink2"           "lightpink3"           "lightpink4"          
## [424] "lightsalmon"          "lightsalmon1"         "lightsalmon2"        
## [427] "lightsalmon3"         "lightsalmon4"         "lightseagreen"       
## [430] "lightskyblue"         "lightskyblue1"        "lightskyblue2"       
## [433] "lightskyblue3"        "lightskyblue4"        "lightslateblue"      
## [436] "lightslategray"       "lightslategrey"       "lightsteelblue"      
## [439] "lightsteelblue1"      "lightsteelblue2"      "lightsteelblue3"     
## [442] "lightsteelblue4"      "lightyellow"          "lightyellow1"        
## [445] "lightyellow2"         "lightyellow3"         "lightyellow4"        
## [448] "limegreen"            "linen"                "magenta"             
## [451] "magenta1"             "magenta2"             "magenta3"            
## [454] "magenta4"             "maroon"               "maroon1"             
## [457] "maroon2"              "maroon3"              "maroon4"             
## [460] "mediumaquamarine"     "mediumblue"           "mediumorchid"        
## [463] "mediumorchid1"        "mediumorchid2"        "mediumorchid3"       
## [466] "mediumorchid4"        "mediumpurple"         "mediumpurple1"       
## [469] "mediumpurple2"        "mediumpurple3"        "mediumpurple4"       
## [472] "mediumseagreen"       "mediumslateblue"      "mediumspringgreen"   
## [475] "mediumturquoise"      "mediumvioletred"      "midnightblue"        
## [478] "mintcream"            "mistyrose"            "mistyrose1"          
## [481] "mistyrose2"           "mistyrose3"           "mistyrose4"          
## [484] "moccasin"             "navajowhite"          "navajowhite1"        
## [487] "navajowhite2"         "navajowhite3"         "navajowhite4"        
## [490] "navy"                 "navyblue"             "oldlace"             
## [493] "olivedrab"            "olivedrab1"           "olivedrab2"          
## [496] "olivedrab3"           "olivedrab4"           "orange"              
## [499] "orange1"              "orange2"              "orange3"             
## [502] "orange4"              "orangered"            "orangered1"          
## [505] "orangered2"           "orangered3"           "orangered4"          
## [508] "orchid"               "orchid1"              "orchid2"             
## [511] "orchid3"              "orchid4"              "palegoldenrod"       
## [514] "palegreen"            "palegreen1"           "palegreen2"          
## [517] "palegreen3"           "palegreen4"           "paleturquoise"       
## [520] "paleturquoise1"       "paleturquoise2"       "paleturquoise3"      
## [523] "paleturquoise4"       "palevioletred"        "palevioletred1"      
## [526] "palevioletred2"       "palevioletred3"       "palevioletred4"      
## [529] "papayawhip"           "peachpuff"            "peachpuff1"          
## [532] "peachpuff2"           "peachpuff3"           "peachpuff4"          
## [535] "peru"                 "pink"                 "pink1"               
## [538] "pink2"                "pink3"                "pink4"               
## [541] "plum"                 "plum1"                "plum2"               
## [544] "plum3"                "plum4"                "powderblue"          
## [547] "purple"               "purple1"              "purple2"             
## [550] "purple3"              "purple4"              "red"                 
## [553] "red1"                 "red2"                 "red3"                
## [556] "red4"                 "rosybrown"            "rosybrown1"          
## [559] "rosybrown2"           "rosybrown3"           "rosybrown4"          
## [562] "royalblue"            "royalblue1"           "royalblue2"          
## [565] "royalblue3"           "royalblue4"           "saddlebrown"         
## [568] "salmon"               "salmon1"              "salmon2"             
## [571] "salmon3"              "salmon4"              "sandybrown"          
## [574] "seagreen"             "seagreen1"            "seagreen2"           
## [577] "seagreen3"            "seagreen4"            "seashell"            
## [580] "seashell1"            "seashell2"            "seashell3"           
## [583] "seashell4"            "sienna"               "sienna1"             
## [586] "sienna2"              "sienna3"              "sienna4"             
## [589] "skyblue"              "skyblue1"             "skyblue2"            
## [592] "skyblue3"             "skyblue4"             "slateblue"           
## [595] "slateblue1"           "slateblue2"           "slateblue3"          
## [598] "slateblue4"           "slategray"            "slategray1"          
## [601] "slategray2"           "slategray3"           "slategray4"          
## [604] "slategrey"            "snow"                 "snow1"               
## [607] "snow2"                "snow3"                "snow4"               
## [610] "springgreen"          "springgreen1"         "springgreen2"        
## [613] "springgreen3"         "springgreen4"         "steelblue"           
## [616] "steelblue1"           "steelblue2"           "steelblue3"          
## [619] "steelblue4"           "tan"                  "tan1"                
## [622] "tan2"                 "tan3"                 "tan4"                
## [625] "thistle"              "thistle1"             "thistle2"            
## [628] "thistle3"             "thistle4"             "tomato"              
## [631] "tomato1"              "tomato2"              "tomato3"             
## [634] "tomato4"              "turquoise"            "turquoise1"          
## [637] "turquoise2"           "turquoise3"           "turquoise4"          
## [640] "violet"               "violetred"            "violetred1"          
## [643] "violetred2"           "violetred3"           "violetred4"          
## [646] "wheat"                "wheat1"               "wheat2"              
## [649] "wheat3"               "wheat4"               "whitesmoke"          
## [652] "yellow"               "yellow1"              "yellow2"             
## [655] "yellow3"              "yellow4"              "yellowgreen"

More info about color scheme extractor code in R:

Points:

Using pch="". It has values between 1 till 25 or a single character.

par(mfrow=c(4,2), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x1<-rnorm(10)
plot(x1, type = "p", pch = 0)
plot(x1, type = "p", pch = 10)
plot(x1, type = "p", pch = 25)
plot(x1, type = "p", pch = "a")
plot(x1, type = "p", pch = "*")
plot(x1[1:26], type = "p", pch = 0:25)
plot(x1[1:26], type = "p", pch = letters)

Lines:

====Line types in R : lty====

lty for changing the lines type and lwd to change line width. The argument is a string (“blank”, “solid”, “dashed”, “dotted”, “dotdash”, “longdash”, or “twodash”) or an integer (0=blank, 1=solid (default), 2=dashed, 3=dotted, 4=dotdash, 5=longdash, 6=twodash)

#Line types
#++++++++++++++++++++++++++++++++++++++++++++
generateRLineTypes<-function(){
  oldPar<-par()
  par(font=2, mar=c(0,0,0,0))
  plot(1, pch="", ylim=c(0,6), xlim=c(0,0.7),  axes=FALSE,xlab="", ylab="")
  for(i in 0:6) lines(c(0.3,0.7), c(i,i), lty=i, lwd=3)
  text(rep(0.1,6), 0:6, labels=c("0.'blank'", "1.'solid'", "2.'dashed'", "3.'dotted'",
                                 "4.'dotdash'", "5.'longdash'", "6.'twodash'"))
  par(mar=oldPar$mar,font=oldPar$font )
}
generateRLineTypes()

Example:

par(mfrow=c(3,3), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x1<-1:5
plot(x1, type = "l", lty = "blank")
plot(x1, type = "l", lty = "solid")
plot(x1, type = "l", lty = "dashed")
plot(x1, type = "l", lty = "dotted")
plot(x1, type = "l", lty = "dotdash")
plot(x1, type = "l", lty = "longdash")
plot(x1, type = "l", lty = "twodash")

====An additional lines() on a graph====

Example:

x1<-c(1,5,7,20)
x2<-1:10
plot(x1, type = "l", lty = "solid",col="blue")
lines(x2, type = "o", lty = "dashed", col = "red")

====Straight abline()====

abline() can be used to add vertical, horizontal or regression lines.

Formula:

abline(a=NULL, b=NULL, h=NULL, v=NULL, …)

Vertical line:

par(mfrow=c(1,3), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics

#Example-1: Add one line
plot(cars)
abline(v=10, col="red")

#Example-2: add 2 lines 
# change line colors, sizes and types
plot(cars)
abline(v=c(5,15), col=c("blue", "blue"), lty=c(1,2), lwd=c(1, 3))

#Example-3:
set.seed(1234); mydata<-rnorm(100)
hist(mydata, col="lightblue")
abline(v = mean(mydata), col="red", lwd=3, lty=2)

Horizontal line:

plot(cars,col="red")
abline(h=80, col="green")

Regression line:

lm() function to fit linear model.

par(mgp=c(2,1,0), mar=c(3,3,1,1))
# Fit regression line
require(stats)
reg<-lm(dist ~ speed, data = cars)
coeff=coefficients(reg)
# equation of the line : 
eq = paste0("y = ", round(coeff[2],1), "*x ", round(coeff[1],1))
# plot
plot(cars, main=eq,col="blue")
abline(reg, col="red")

Boxes:

bty specifies the box type.

par(mfrow=c(4,2), mar=c(3,3,1,0)+.5, mgp=c(1.6,.6,0))  # set up the graphics
x1<-rnorm(50)
plot(x1, bty = "o") # the default
plot(x1, bty = "n") # no box
plot(x1, bty = "l")
plot(x1, bty = "7")
plot(x1, bty = "u")
plot(x1, bty = "c")
plot(x1, bty = "]")
box(lty = '1375', col = 'red')

Grid:

grid() adds a grid to the current graph.

Example:

x1<-rnorm(100)
plot(x1, col="#FF8100")
grid()

Background:

Change the background color with par(bg=).

Example:

x1<-rnorm(50)
par(bg="whitesmoke")
plot(x1, bty ="o",col="red") # the default

Overlaying plots:

matplot()

Example:

N <- 200
x1 <- rnorm(N)
x2 <- rnorm(N) + x1 + 1
y <- 1 + x1 + x2 + rnorm(N)
mydat <- data.frame(y,x1,x2)
matplot(mydat[,2:3], pch = 1:2)

Multiple plots:

  • par() for display multiple figures

  • mfrow = c(3,2) : 3 row x 2 column

  • mfcol = c(3,2) : same with mfrow but another positions

Example-1:

par(mfrow = c(3,2))
plot(x1, type = "n")
plot(x1, type = "p")
plot(x1, type = "l")
plot(x1, type = "h")
plot(x1, type = "s")
plot(x1, type = "S")

Example-2:

par(mfcol = c(3,2))
plot(x1, type = "n")
plot(x1, type = "p")
plot(x1, type = "l")
plot(x1, type = "h")
plot(x1, type = "s")
plot(x1, type = "S")