This file implements Programming Assignment 2: Visualize Network Data for the Coursera Data Visualization Class.
Data obtained from https://networkdata.ics.uci.edu/data.php?id=5
American College football: network of American football games between Division IA colleges during regular season Fall 2000. Please cite M. Girvan and M. E. J. Newman, Proc. Natl. Acad. Sci. USA 99, 7821-7826 (2002)
Community structure in social and biological networks (Girvan and Newman, 2002)
The values are as follows:
0 = Atlantic Coast
1 = Big East
2 = Big Ten
3 = Big Twelve
4 = Conference USA
5 = Independents
6 = Mid-American
7 = Mountain West
8 = Pacific Ten
9 = Southeastern
10 = Sun Belt
11 = Western Athletic
# setwd("~/Education/Coursera - Data Visualization/Projects/PA2/American College Football")
football <- read.graph("football.gml", format="gml")
#str(football)
summary(football)
## IGRAPH U--- 115 613 --
## + attr: id (v/n), label (v/c), value (v/n)
# Note 0-based value vs. 1-based R index!
conferences <- c("Atlantic Coast", "Big East", "Big Ten", "Big Twelve",
"Conference USA", "Independents", "Mid-American", "Mountain West",
"Pacific Ten", "Southeastern", "Sun Belt", "Western Athletic")
V(football)$conference <- conferences[V(football)$value + 1]
write.graph(football, "football_edit.gml", format="gml")
Normally I would do further exploratory data analysis here, but that would be confusing since we are only submitting a single visualization.
See More About the Data below.
The assignment should be graded on the contents of this section.
Visualization of the 2000 American College Football Season.
Nodes are colleges with the colors being their conference. Edges represent games.
The actual visualization in Gephi has a nice interactive feature where hovering over a college dims the display except for the games it played.
I abandonded this approach because I thought it gave an inferior result.
I use the R package networkD3 citep(citation(“networkD3”)) to provide interactive D3 JavaScript Network Graphs from R.
This blog post was also helpful: Creating network graphs using javascript directly from R
Also see networkD3 example below.
This tutorial was also helpful: http://www.kateto.net/wordpress/wp-content/uploads/2015/06/Polnet%202015%20Network%20Viz%20Tutorial%20-%20Ognyanova.pdf
Convert the igraph data into something more suitable for networkD3 (see example below).
football.nodes <- get.data.frame(football, what = "vertices")
football.edges <- get.data.frame(football, what = "edges")
str(football.nodes)
## 'data.frame': 115 obs. of 4 variables:
## $ id : num 0 1 2 3 4 5 6 7 8 9 ...
## $ label : chr "BrighamYoung" "FloridaState" "Iowa" "KansasState" ...
## $ value : num 7 0 2 3 7 3 2 8 8 7 ...
## $ conference: chr "Mountain West" "Atlantic Coast" "Big Ten" "Big Twelve" ...
str(football.edges)
## 'data.frame': 613 obs. of 2 variables:
## $ from: num 1 3 1 5 4 3 7 8 9 1 ...
## $ to : num 2 4 5 6 6 7 8 9 10 10 ...
networkD3 requires edge references to nodes start from 0.
football.edges$from <- football.edges$from - 1
football.edges$to <- football.edges$to - 1
Create the interactive D3 plot.
forceNetwork(Links = football.edges, Nodes = football.nodes,
Source = "from", Target = "to",
NodeID = "label",
legend = TRUE,
linkDistance = 100,
Group = "conference", opacity = 1.0, zoom = TRUE)
Note you can zoom with the scroll wheel.
summary(football)
## IGRAPH U--- 115 613 --
## + attr: id (v/n), label (v/c), value (v/n), conference (v/c)
str(football)
## IGRAPH U--- 115 613 --
## + attr: id (v/n), label (v/c), value (v/n), conference (v/c)
## + edges:
## 1 -- 2 5 10 17 24 34 36 42 66 91 94 105
## 2 -- 1 26 28 34 38 46 58 90 102 104 106 110
## 3 -- 4 7 14 15 16 48 61 65 73 75 101 107
## 4 -- 3 6 12 27 41 53 59 73 75 82 85 103
## 5 -- 1 6 10 17 24 29 42 70 94 105 109
## 6 -- 4 5 11 12 53 75 82 85 91 98 99 108
## 7 -- 3 8 33 40 48 56 59 61 65 86 101 107
## 8 -- 7 9 22 23 41 69 74 78 79 83 109 112
## 9 -- 8 10 22 23 42 52 69 78 79 91 112
## 10 -- 1 5 9 17 23 24 42 65 94 105 109
## 11 -- 6 12 61 73 75 82 85 99 103 108
## 12 -- 4 6 11 25 29 51 70 91 98 105
## 13 -- 14 15 18 19 27 35 37 39 44 86
## 14 -- 3 13 16 33 40 46 61 65 101 107 111
## 15 -- 3 13 16 27 39 44 55 72 86 100
## 16 -- 3 14 15 33 40 48 61 69 93 101 107 115
## 17 -- 1 5 10 18 24 39 42 68 82 94 105
## 18 -- 13 17 21 28 59 63 66 88 96 97 114
## 19 -- 13 20 32 35 37 39 43 55 62 72 100
## 20 -- 19 30 31 34 36 37 45 56 80 95 102
## 21 -- 18 22 37 63 66 71 76 77 88 97 114
## 22 -- 8 9 21 23 33 47 52 69 78 109 112
## 23 -- 8 9 10 22 24 48 52 69 78 79 109
## 24 -- 1 5 10 17 23 42 79 91 94 105 112
## 25 -- 12 26 29 51 67 70 85 88 91 111
## 26 -- 2 25 34 38 46 54 90 104 106 107 110
## 27 -- 4 13 15 28 35 39 43 44 62 86
## 28 -- 2 18 27 57 63 64 66 71 77 96 97
## 29 -- 5 12 25 39 51 70 79 91 114
## 30 -- 20 31 36 43 56 80 81 83 92 95 102
## 31 -- 20 30 36 45 51 56 80 83 95 102 110
## 32 -- 19 33 35 44 55 56 62 72 80 86 100
## 33 -- 7 14 16 22 32 40 48 50 65 101 107
## 34 -- 1 2 20 26 38 46 90 104 106 110
## 35 -- 13 19 27 32 36 43 55 62 72 95 100
## 36 -- 1 20 30 31 35 45 56 80 93 95 102
## 37 -- 13 19 20 21 38 44 59 60
## 38 -- 2 26 34 37 46 81 90 96 104 106 110
## 39 -- 13 15 17 19 27 29 40 44 55 72 86
## 40 -- 7 14 16 33 39 48 55 61 83 101 107
## 41 -- 4 8 42 52 53 73 75 82 99 103 108
## 42 -- 1 5 9 10 17 24 41 68 94 105
## 43 -- 19 27 30 35 44 58 64
## 44 -- 13 15 27 32 37 39 43 62 71 80 86
## 45 -- 20 31 36 46 49 58 67 76 87 92 113
## 46 -- 2 14 26 34 38 45 63 90 104 106 110
## 47 -- 22 48 50 54 68 74 84 89 111 112 115
## 48 -- 3 7 16 23 33 40 47 61 62 65 101
## 49 -- 45 50 54 58 67 76 87 92 93 97 99
## 50 -- 33 47 49 54 68 74 84 85 89 111 115
## 51 -- 12 25 29 31 52 69 70 79 91
## 52 -- 9 22 23 41 51 69 78 79 102 109 112
## 53 -- 4 6 41 54 73 75 85 99 103 113
## 54 -- 26 47 49 50 53 68 74 84 87 89 111 115
## 55 -- 15 19 32 35 39 40 56 62 72 100
## 56 -- 7 20 30 31 32 36 55 80 90 95 102
## 57 -- 28 58 63 66 71 77 88 96 97 107
## 58 -- 2 43 45 49 57 76 87 92 93 113
## 59 -- 4 7 18 37 60 64 89 98 102 115
## 60 -- 37 59 61 64 67 77 98 114
## 61 -- 3 7 11 14 16 40 48 60 65 72 107
## 62 -- 19 27 32 35 44 48 55 63 72 93 100
## 63 -- 18 21 28 46 57 62 71 77 88 96 106
## 64 -- 28 43 59 60 65 66 98 110 113
## 65 -- 3 7 10 14 33 48 61 64 101 107 112
## 66 -- 1 18 21 28 57 64 67 71 88 97 114
## 67 -- 25 45 49 60 66 76 77 87 92 93 113
## 68 -- 17 42 47 50 54 69 74 84 89 105 111 115
## 69 -- 8 9 16 22 23 51 52 68 79 109 112
## 70 -- 5 12 25 29 51 71 84 89 91 92 96
## 71 -- 21 28 44 57 63 66 70 77 96 104 114
## 72 -- 15 19 32 35 39 55 61 62 73 100
## 73 -- 3 4 11 41 53 72 75 82 103 105 108
## 74 -- 8 47 50 54 68 75 78 84 89 111 115
## 75 -- 3 4 6 11 41 53 73 74 83 85 103
## 76 -- 21 45 49 58 67 77 87 93 108 113
## 77 -- 21 28 57 60 63 67 71 76 96 97 114
## 78 -- 8 9 22 23 52 74 79 83 99 109 112
## 79 -- 8 9 23 24 29 51 52 69 78 109 112
## 80 -- 20 30 31 32 36 44 56 81 95 102 110
## 81 -- 30 38 80 83 86 87 92 94 95 106 111
## 82 -- 4 6 11 17 41 73 83 84 85 99 108
## 83 -- 8 30 31 40 75 78 81 82 94 95 101
## 84 -- 47 50 54 68 70 74 82 85 89 111 115
## 85 -- 4 6 11 25 50 53 75 82 84 99 108
## 86 -- 7 13 15 27 32 39 44 81 100
## 87 -- 45 49 54 58 67 76 81 88 92 93 98
## 88 -- 18 21 25 57 63 66 87 96 97 105 114
## 89 -- 47 50 54 59 68 70 74 84 90 108 111 115
## 90 -- 2 26 34 38 46 56 89 100 104 106 110
## 91 -- 1 6 9 12 24 25 29 51 70
## 92 -- 30 45 49 58 67 70 81 87 93 94 113
## 93 -- 16 36 49 58 62 67 76 87 92 107 113
## 94 -- 1 5 10 17 24 42 81 83 92 105
## 95 -- 20 30 31 35 36 56 80 81 83 102
## 96 -- 18 28 38 57 63 70 71 77 88 114
## 97 -- 18 21 28 49 57 66 77 88 113 114
## 98 -- 6 12 59 60 64 87 99 113
## 99 -- 6 11 41 49 53 78 82 85 98 103 108
## 100 -- 15 19 32 35 55 62 72 86 90 101
## 101 -- 3 7 14 16 33 40 48 65 83 100 103
## 102 -- 2 20 30 31 36 52 56 59 80 95
## 103 -- 4 11 41 53 73 75 99 101 104 108
## 104 -- 2 26 34 38 46 71 90 103 106 110
## 105 -- 1 5 10 12 17 24 42 68 73 88 94 115
## 106 -- 2 26 34 38 46 63 81 90 104 110
## 107 -- 3 7 14 16 26 33 40 57 61 65 93
## 108 -- 6 11 41 73 76 82 85 89 99 103
## 109 -- 5 8 10 22 23 52 69 78 79 112
## 110 -- 2 26 31 34 38 46 64 80 90 104 106
## 111 -- 14 25 47 50 54 68 74 81 84 89 115
## 112 -- 8 9 22 24 47 52 65 69 78 79 109
## 113 -- 45 53 58 64 67 76 92 93 97 98
## 114 -- 18 21 29 60 66 71 77 88 96 97
## 115 -- 16 47 50 54 59 68 74 84 89 105 111
vertex_attr(football)
## $id
## [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## [18] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
## [35] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
## [52] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
## [69] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
## [86] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
## [103] 102 103 104 105 106 107 108 109 110 111 112 113 114
##
## $label
## [1] "BrighamYoung" "FloridaState" "Iowa"
## [4] "KansasState" "NewMexico" "TexasTech"
## [7] "PennState" "SouthernCalifornia" "ArizonaState"
## [10] "SanDiegoState" "Baylor" "NorthTexas"
## [13] "NorthernIllinois" "Northwestern" "WesternMichigan"
## [16] "Wisconsin" "Wyoming" "Auburn"
## [19] "Akron" "VirginiaTech" "Alabama"
## [22] "UCLA" "Arizona" "Utah"
## [25] "ArkansasState" "NorthCarolinaState" "BallState"
## [28] "Florida" "BoiseState" "BostonCollege"
## [31] "WestVirginia" "BowlingGreenState" "Michigan"
## [34] "Virginia" "Buffalo" "Syracuse"
## [37] "CentralFlorida" "GeorgiaTech" "CentralMichigan"
## [40] "Purdue" "Colorado" "ColoradoState"
## [43] "Connecticut" "EasternMichigan" "EastCarolina"
## [46] "Duke" "FresnoState" "OhioState"
## [49] "Houston" "Rice" "Idaho"
## [52] "Washington" "Kansas" "SouthernMethodist"
## [55] "Kent" "Pittsburgh" "Kentucky"
## [58] "Louisville" "LouisianaTech" "LouisianaMonroe"
## [61] "Minnesota" "MiamiOhio" "Vanderbilt"
## [64] "MiddleTennesseeState" "Illinois" "MississippiState"
## [67] "Memphis" "Nevada" "Oregon"
## [70] "NewMexicoState" "SouthCarolina" "Ohio"
## [73] "IowaState" "SanJoseState" "Nebraska"
## [76] "SouthernMississippi" "Tennessee" "Stanford"
## [79] "WashingtonState" "Temple" "Navy"
## [82] "TexasA&M" "NotreDame" "TexasElPaso"
## [85] "Oklahoma" "Toledo" "Tulane"
## [88] "Mississippi" "Tulsa" "NorthCarolina"
## [91] "UtahState" "Army" "Cincinnati"
## [94] "AirForce" "Rutgers" "Georgia"
## [97] "LouisianaState" "LouisianaLafayette" "Texas"
## [100] "Marshall" "MichiganState" "MiamiFlorida"
## [103] "Missouri" "Clemson" "NevadaLasVegas"
## [106] "WakeForest" "Indiana" "OklahomaState"
## [109] "OregonState" "Maryland" "TexasChristian"
## [112] "California" "AlabamaBirmingham" "Arkansas"
## [115] "Hawaii"
##
## $value
## [1] 7 0 2 3 7 3 2 8 8 7 3 10 6 2 6 2 7 9 6 1 9 8 8
## [24] 7 10 0 6 9 11 1 1 6 2 0 6 1 5 0 6 2 3 7 5 6 4 0
## [47] 11 2 4 11 10 8 3 11 6 1 9 4 11 10 2 6 9 10 2 9 4 11 8
## [70] 10 9 6 3 11 3 4 9 8 8 1 5 3 5 11 3 6 4 9 11 0 5 4
## [93] 4 7 1 9 9 10 3 6 2 1 3 0 7 0 2 3 8 0 4 8 4 9 11
##
## $conference
## [1] "Mountain West" "Atlantic Coast" "Big Ten"
## [4] "Big Twelve" "Mountain West" "Big Twelve"
## [7] "Big Ten" "Pacific Ten" "Pacific Ten"
## [10] "Mountain West" "Big Twelve" "Sun Belt"
## [13] "Mid-American" "Big Ten" "Mid-American"
## [16] "Big Ten" "Mountain West" "Southeastern"
## [19] "Mid-American" "Big East" "Southeastern"
## [22] "Pacific Ten" "Pacific Ten" "Mountain West"
## [25] "Sun Belt" "Atlantic Coast" "Mid-American"
## [28] "Southeastern" "Western Athletic" "Big East"
## [31] "Big East" "Mid-American" "Big Ten"
## [34] "Atlantic Coast" "Mid-American" "Big East"
## [37] "Independents" "Atlantic Coast" "Mid-American"
## [40] "Big Ten" "Big Twelve" "Mountain West"
## [43] "Independents" "Mid-American" "Conference USA"
## [46] "Atlantic Coast" "Western Athletic" "Big Ten"
## [49] "Conference USA" "Western Athletic" "Sun Belt"
## [52] "Pacific Ten" "Big Twelve" "Western Athletic"
## [55] "Mid-American" "Big East" "Southeastern"
## [58] "Conference USA" "Western Athletic" "Sun Belt"
## [61] "Big Ten" "Mid-American" "Southeastern"
## [64] "Sun Belt" "Big Ten" "Southeastern"
## [67] "Conference USA" "Western Athletic" "Pacific Ten"
## [70] "Sun Belt" "Southeastern" "Mid-American"
## [73] "Big Twelve" "Western Athletic" "Big Twelve"
## [76] "Conference USA" "Southeastern" "Pacific Ten"
## [79] "Pacific Ten" "Big East" "Independents"
## [82] "Big Twelve" "Independents" "Western Athletic"
## [85] "Big Twelve" "Mid-American" "Conference USA"
## [88] "Southeastern" "Western Athletic" "Atlantic Coast"
## [91] "Independents" "Conference USA" "Conference USA"
## [94] "Mountain West" "Big East" "Southeastern"
## [97] "Southeastern" "Sun Belt" "Big Twelve"
## [100] "Mid-American" "Big Ten" "Big East"
## [103] "Big Twelve" "Atlantic Coast" "Mountain West"
## [106] "Atlantic Coast" "Big Ten" "Big Twelve"
## [109] "Pacific Ten" "Atlantic Coast" "Conference USA"
## [112] "Pacific Ten" "Conference USA" "Southeastern"
## [115] "Western Athletic"
edge_attr(football)
## list()
Disabled because the output is extermely verbose.
cliques(football)
This is non-intuitive to me. I expected the conferences to be cliques.
summary(degree(football))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.00 10.00 11.00 10.66 11.00 12.00
hist(degree(football))
betweenness(football)
## [1] 209.26776 113.49759 84.52200 148.59451 68.68598 68.66739 126.76715
## [8] 93.80051 32.26071 76.20444 44.49437 73.42964 65.33837 111.37367
## [15] 45.56652 134.58641 143.07681 106.93346 54.70307 62.85973 148.44136
## [22] 142.51877 43.36420 48.88291 133.33015 114.54206 109.51871 68.66274
## [29] 117.04623 58.15397 97.17306 54.21752 95.82182 47.36904 51.69498
## [36] 99.67803 85.06001 58.81081 162.22819 68.94174 90.06245 41.47076
## [43] 50.17220 87.56826 92.57296 73.70551 66.68144 97.27411 114.58186
## [50] 63.02373 92.57023 96.00023 63.45256 106.66870 25.15844 75.57870
## [57] 61.44575 66.85743 185.64781 69.98524 97.92026 133.68577 91.44660
## [64] 117.78147 131.17172 65.02409 68.92042 76.07006 69.28455 155.48200
## [71] 97.83797 80.94218 104.95725 52.28318 65.50281 75.23422 38.30249
## [78] 76.65134 35.57265 52.62973 187.82634 74.13467 215.98577 42.74661
## [85] 47.87282 51.74660 79.72469 91.46165 129.33199 110.51008 55.52058
## [92] 106.53081 153.52996 89.87082 34.24606 44.61957 44.70298 66.89162
## [99] 91.07764 58.37384 75.88172 117.78874 102.58809 87.18712 121.21585
## [106] 28.15933 132.02865 66.73298 19.33667 57.69261 92.55984 48.40982
## [113] 74.59697 41.85433 65.99666
closeness(football)
## [1] 0.003717472 0.003623188 0.003571429 0.003690037 0.003533569
## [6] 0.003367003 0.003731343 0.003521127 0.003164557 0.003484321
## [11] 0.003344482 0.003533569 0.003424658 0.003690037 0.003378378
## [16] 0.003717472 0.003717472 0.003610108 0.003333333 0.003424658
## [21] 0.003533569 0.003484321 0.003225806 0.003378378 0.003717472
## [26] 0.003623188 0.003496503 0.003355705 0.003584229 0.003508772
## [31] 0.003597122 0.003322259 0.003597122 0.003401361 0.003300330
## [36] 0.003484321 0.003521127 0.003460208 0.003546099 0.003571429
## [41] 0.003496503 0.003472222 0.003246753 0.003472222 0.003508772
## [46] 0.003484321 0.003448276 0.003558719 0.003597122 0.003546099
## [51] 0.003496503 0.003460208 0.003484321 0.003610108 0.003278689
## [56] 0.003448276 0.003344482 0.003484321 0.003831418 0.003484321
## [61] 0.003610108 0.003546099 0.003436426 0.003676471 0.003663004
## [66] 0.003472222 0.003521127 0.003521127 0.003436426 0.003703704
## [71] 0.003546099 0.003436426 0.003597122 0.003378378 0.003508772
## [76] 0.003484321 0.003322259 0.003436426 0.003215434 0.003436426
## [81] 0.003816794 0.003558719 0.003703704 0.003460208 0.003378378
## [86] 0.003448276 0.003597122 0.003584229 0.003773585 0.003546099
## [91] 0.003436426 0.003649635 0.003717472 0.003584229 0.003436426
## [96] 0.003378378 0.003300330 0.003472222 0.003401361 0.003300330
## [101] 0.003533569 0.003546099 0.003521127 0.003424658 0.003703704
## [106] 0.003389831 0.003745318 0.003496503 0.003105590 0.003436426
## [111] 0.003623188 0.003355705 0.003472222 0.003311258 0.003623188
From http://christophergandrud.github.io/networkD3/
# Load data
data(MisLinks)
data(MisNodes)
str(MisLinks)
## 'data.frame': 254 obs. of 3 variables:
## $ source: int 1 2 3 3 4 5 6 7 8 9 ...
## $ target: int 0 0 0 2 0 0 0 0 0 0 ...
## $ value : int 1 8 10 6 1 1 1 1 2 1 ...
str(MisNodes)
## 'data.frame': 77 obs. of 3 variables:
## $ name : Factor w/ 77 levels "Anzelma","Babet",..: 63 64 51 57 21 33 12 23 20 65 ...
## $ group: int 1 1 1 1 1 1 1 1 1 1 ...
## $ size : int 15 20 23 30 11 9 11 30 8 29 ...
# Plot
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8, zoom = TRUE)
Another example: https://github.com/benjamin-chan/FacebookNetworkAnalysis/blob/master/FacebookNetwork.Rmd
nodes <- read.csv("Polnet2015/Data/Dataset1-Media-Example-NODES.csv", header=T, as.is=T)
links <- read.csv("Polnet2015/Data/Dataset1-Media-Example-EDGES.csv", header=T, as.is=T)
head(nodes)
head(links)
nrow(nodes); length(unique(nodes$id))
nrow(links); nrow(unique(links[,c("from", "to")]))
# collapse all links of the same type between the same two nodes by summing their weights
links <- aggregate(links[,3], links[,-3], sum)
links <- links[order(links$from, links$to),]
colnames(links)[4] <- "weight"
rownames(links) <- NULL
el <- data.frame(from=as.numeric(factor(links$from))-1,
to=as.numeric(factor(links$to))-1 )
# The nodes need to be in the same order as the “source” column in links:
nl <- cbind(idn=factor(nodes$media, levels=nodes$media), nodes)
forceNetwork(Links = el, Nodes = nl, Source="from", Target="to",
NodeID = "idn", Group = "type.label",linkWidth = 1,
linkColour = "#afafaf", fontSize=12, zoom=T, legend=T,
Nodesize=6, opacity = 0.8, charge=-300,
width = 600, height = 600)
I much prefer the Gephi interactive display of this network. Being able to highlight nodes and see connections is very useful.
See comments in
Social and Economic Networks notes
Fixed problem with my Gephi installation. https://medium.com/coder-snorts/gephi-is-broken-on-mac-os-97fbaef4305e
Fixed.
The interactive Gephi display has a nice feature where when you hover over the nodes it dims the nodes not connected to it. Here is a screenshot of the static output. Notice how the conferences cluster more than in the networkD3 version above.
For web display see http://sigmajs.org/
http://blogs.oii.ox.ac.uk/vis/
Installed this plugin but was unable to get it to work properly.
A red/blue convention is used in accordance with American presentations of political visualizations. This also works well with colorblindness. Vischeck is helpful for checking graphics.
Some useful sites:
http://gis.stackexchange.com/questions/2887/how-to-account-for-colour-blindness-when-designing-maps
http://www.vischeck.com/ - simulate colorblindness on image
http://www.sealthreinhold.com/school/tuftes-rules/
Also see Lecture 2.3.1
File originally created: Sunday, August 9, 2015
File knitted: Sun Aug 09 12:17:01 2015