最直观的方法

本书插图除了外部引用的图片外,均使用 R 语言绘制。读者可以很方便地获取作图代码,来重现书中插图,方法如下:

install.packages("MSG") # 初次使用时安装 MSG 包
library("MSG") # 加载包
msg('4.1') # 重现插图 4.1 和获取作图代码

这是最直观的方式,即运行 msg('图的编号')。注意:图的编号要放在一对引号里,它是个字符串。如果忘记了输入引号,那么得到的源代码和图形可能不是你想要得到的,如 msg(4.10) 将得到图 4.1 而非图 4.10。

可能遇到的问题

附加包支持

有些图形需要额外的附加包支持,初次使用时需要读者自行安装。

如果觉得逐个安装太麻烦,读者可以运行:

msg('0')

就可一次性安装本书示例代码中所需的全部附加包。

中文支持

如果读者用的是 Windows 操作系统,而区域语言的设置不是中文(这种情况在本书的读者群里应该很少见),则可能在重现图形时遇到如下警告:

Warning message:
In readLines(file, warn = FALSE) :
  invalid input found on input connection '......' 

这种情况下,只需在作图前需运行下面一行来支持中文字符:

Sys.setlocale("LC_CTYPE", "Chinese")

基础作图与 ggplot2

很多图形我们都给出了 R 基础作图和 ggplot2 作图两种解决方案,在这种情况下,msg('图的编号')得到的一般是基础作图代码和图形。如果想得到 ggplot2 图形,只需在图形编号前面增加一个 2 就可以了,例如:

msg('24.1')

就可得到图 4.1 的 ggplot2 版本,包括图示和源代码。

注意,并非所有的图都有两个版本;支持编号前有 2的图见附表。

有些图形还可以在编号前面增加个 3。至于用处是什么,你猜。

图的英文代号

除了 msg('图的编号') 外,也可以运行 msg('图的英文代号')。例如,图 4.1 的英文代号是 “vadeaths-barplot”,那么可运行 msg('vadeaths-barplot'),等价于 msg('4.1')

图的编号和英文代号如附表所示。

表 1. MSG::msg() 函数支持的图编号和英文代码
编号 英文代号
0 install-packages
2.2 ggplot2-minard
3.2 pork-price
23.2 pork-price2
3.4 canabalt-boxplot
3.7 tvearn
3.8 music-andrews
33.14 music-andrews-tikz
3.9 music-3d-pcp
3.10 assists-sna
3.11 basketball
3.12 basketball-fourfold
3.13 gov-cn-pct
23.19 gov-cn-pct2
3.14 PlantCounts
23.14 PlantCounts2
3.15 song-words-hclust
3.16 song-words-corr
3.17 song-high-freq
3.18 multireg-scatter
23.18 multireg-scatter2
33.18 multireg-scatter2-tikz
3.19 interaction-bubble
33.19 interaction-bubble-tikz
3.20 OLS-LMS
23.20 OLS-LMS2
33.20 OLS-LMS2-tikz
3.21 outlier-resample
23.21 outlier-resample2
33.21 outlier-resample2-tikz
4.1 vadeaths-barplot
24.1 vadeaths-barplot2
4.2 dotchart
4.3 dotchart2
4.4 hist-geyser
24.4 hist-geyser2
4.5 hist-density
24.5 hist-density2
4.6 stem-islands
4.7 stem-poisson
4.8 insects-boxplot
24.8 insects-boxplot2
4.9 rnorm-boxplot
24.9 rnorm-boxplot2
34.9 rnorm-boxplot2-tikz
4.10 vioplot
24.10 vioplot2
4.11 rug
24.11 rug2
4.12 stripchart
4.13 stripchart2
4.14 pie-chart
24.14 pie-chart2
4.15 floating-pie
4.16 qqnorm
24.16 qqnorm2
4.17 nightingale-ggplot2
5.1 scatter-alpha
25.1 scatter-alpha2
5.2 curve
25.2 curve2
35.2 curve-tikz
5.3 sunflowerplot
5.4 smoothScatter
25.4 smoothScatter2
5.5 windrose
5.6 survival
25.6 survival2
5.7 cdplot
25.7 cdplot2
5.8 spineplot
5.9 bagplot
25.9 bagplot2
6.1 pairs
6.2 pairs2
6.3 coplot
6.4 ChinaPop
6.5 symbols_all
6.6 stars
6.7 faces2
6.8 murcia-ternary
6.9 mosaicplot
6.10 plot-design
6.11 interaction-plot
6.12 rpart
6.13 ggparcoord
6.14 andrews-curve
36.14 andrews-curve-tikz
7.1 contour-grid
27.1 contour-grid2
37.1 contour-grid2-tikz
7.2 contour-pop
27.2 contour-pop2
7.3 density-2d-filled
7.4 filled-contour
7.5 image24
27.5 image242
37.5 image242-tikz
7.6 image
27.6 image2
7.7 persp
7.8 persp-pop
37.8 persp-pop-tikz
7.9 matplot
7.10 matplot2
37.10 matplot2-tikz
7.11 heatmap
7.12 assocplot
7.13 fourfoldplot
7.14 fig-contour-persp
7.15 assocplot2
8.1 discrete-var
8.2 pay-rating-points
38.2 pay-rating-points-tikz
8.3 pay-rating-log
8.4 music-mds
8.5 tufte1997
8.6 cut-plot
38.6 cut-plot-tikz
8.8 sunspots-asp
8.9 optical-illusion
8.10 kmeans-cluster
38.10 kmeans-cluster-tikz
8.11 error-bars
9.1 lines-demo
9.2 graphicsEvent
9.3 par2
9.4 plot-region
9.5 ColorBrewer-all
9.6 grad-color
9.7 point-type
9.8 point-iris
9.9 point-random
9.10 plot-type
9.11 xspline-demo
9.12 polygon-kaleidoscope
9.13 polygon-demo
9.14 text
9.15 axis-demo
9.16 plotmath
39.16 plotmath-tikz
9.17 layout
9.18 layout-margin
9.19 split-screen
9.20 par1
9.21 waterfall-chart
9.22 gradArrows
9.23 sign-stat
10.1 qplot
10.2 mtcars-smooth
10.3 diamonds-hex
10.4 ggplot2-violin
10.5 iris-ggplot2
10.6 quake6-bubbles
310.6 quake6-bubbles-tikz
10.7 diamonds-cut
10.8 diamonds-polar
10.9 diamonds-carat
10.10 geom-jitter-demo
10.11 ggplot2-theme
10.12 ggplot2-layers
11.1 grid-subplot
311.1 grid-subplot-tikz
11.2 grid-rotate
11.3 grid-princomp
11.4 lattice-iris-hist
11.5 lattice-vadeaths
11.6 lattice-data-par
311.6 lattice-data-par-tikz
11.7 lattice-panel-function
11.8 rgl-ch4
11.9 rgl-beta
11.11 animation-pollen
A.2 cn-us-redraw
A.5 covidchina
A.6 covidcountries
A.7 map
2A.7 map2
A.8 worldmap
A.10 eqMaps-demo

重复使用

本文文字和图表使用知识共享许可协议 CC BY 4.0源文件采用 MIT 协议。

欢迎修订

如果您发现本文里含有任何错误(包括错别字和标点符号),欢迎在本站的 GitHub 项目里提交修订意见。

引用本文

如果您使用了本文的内容,请按照以下方式引用:

赵鹏 (2021). 作图代码. 现代统计图形. https://msg2020.pzhao.org/code/

BibTeX citation

@misc{
  title = "作图代码",
  author = "赵鹏",
  year = "2021",
  journal = "现代统计图形",
  note = "https://msg2020.pzhao.org/code/"
}

欢迎留言