第三章 图形初阶

作者: lxmic | 来源:发表于2017-10-04 15:31 被阅读138次

数据可视化,绝对是一门艺术。完美的数据,需要有完美的图片来展示。人类非常善于从视觉呈现中洞察关系。一幅精心绘制的图形能够帮助你在数以千计的零散信息中做出有意义的比较,提炼出使用其他方法时不那么容易发现的模式。而R具有顶尖水准的制图功能,进行很好的可视化。


Twitter和Flickr的使用情况可视化,白色的是同时使用两者,蓝色的是Twitter,黄色的是Flickr Facebook的使用情况 Meteor showers on Earth

3.1 使用图形

R是一个惊艳的图形构建平台。在通常的交互式会话中,你可以通过逐条输入语句构建图形,逐渐完善图形特征,直至得到想要的结果。

attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
detach(mtcars)

3.2 一个简单的例子

病人对药物的相应
# 数据导入R中
dose  <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
# 绘图,对药物A的响应
plot(dose, drugA, type="b")
对药物A的响应

plot()是一个函数,plot(x, y, type="b"),将x作为横轴,y置于纵轴,绘制点集,连线。选项type=“b”表示同时绘制点和线,具体的可以用?plot查看帮助选项。

3.3.1 符号和线条

使用图形参数来指定绘图时使用的符号和线条类型。

图形参数 pch种类,其中21-25可以使用col和bg来分别设置边界颜色和填充色

3.3.2 颜色

在R语言中,可以通过下标、颜色名称、十六进制的颜色值、RGB值或HSV值来指定颜色。函数colors()可以返回所有可用颜色的名称。

# RColorBrewer 这个包是用来创建吸引人的颜色配对
install.packages("RColorBrewer")
library(RColorBrewer)
n <- 7
# 产生七种颜色的向量,
mycolors <- brewer.pal(n, "Set1")
# 最后画出BAR图
barplot(rep(1,n), col=mycolors)
颜色指定参数 RColorBrewer得到的7色bars

gray()函数可以生成多阶灰度色,rainbow()可以生成连续的“彩虹型”颜色

n <- 10
mycolors <- rainbow(n)
pie(rep(1, n), labels=mycolors, col=mycolors)
mygrays <- gray(0:n/n)
pie(rep(1, n), labels=mygrays, col=mygrays)

rainbow()十色彩虹图 gray()产生的10阶灰度色

3.3.3 文本属性

图形参数同样可以用来指定字号、字体和字样。

指定文本大小的参数 指定文本大小的参数 指定字体族和字样的参数

3.3.4 图形尺寸与边界尺寸

图形尺寸和边界尺寸大小的参数
  • 通过图形参数控制图形外观
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
# 生成可以修改的当前图形参数列表
opar <- par(no.readonly=TRUE)
# 2英寸宽,3英寸高
par(pin=c(2, 3))
# 线条宽度为默认的2倍,符号为默认的1.5倍
par(lwd=2, cex=1.5)
# 坐标轴刻度文本被设置为斜体,缩小为原来的75%
par(cex.axis=.75, font.axis=3)
# 使用红色的实心圆圈和虚线创建第一幅图
plot(dose, drugA, type="b", pch=19, lty=2, col="red")
# 使用绿色填充的绿色菱形加蓝色虚线创建了第二幅图
plot(dose, drugB, type="b", pch=23, lty=6, col="blue", bg="green")
# 恢复初始的图形参数设置
par(opar)   
DrugA反应 DrugB反应

par() 的参数设定对两幅图都有效,而在plot()函数中指定的函数只对当前的图有效。

3.4 添加文本、自定义坐标轴和图例

可以添加标题main、副标题sub、坐标轴标签(xlab、ylab)并指定了坐标轴范围(xlim、ylim)。当然并不是所有的函数都支持这些选项。

plot(dose, drugA, type="b",  
     col="red", lty=2, pch=2, lwd=2,
     main="Clinical Trials for Drug A", 
     sub="This is hypothetical data", 
     xlab="Dosage", ylab="Drug Response",
     xlim=c(0, 60), ylim=c(0, 70))
文本添加

3.4.1 标题

title()函数可以为图形添加标题和坐标轴标签,当然也是可以指定其他图形参数。调用形式:
title(main="", sub="", xlab="", ylab="", col.main="")

3.4.2 坐标轴

可以使用axis()函数来创建自定义的坐标轴,但是你要禁止使用绘图函数自动生成的坐标轴,axes=FALSE禁用全部坐标轴,坐标轴创建的选项:

坐标抽创建选项

自定义坐标轴的例子:

x <- c(1:10)
y <- x
z <- 10/x
# 保存当前的所有参数
opar <- par(no.readonly=TRUE)
# 设置边界大小
par(mar=c(5, 4, 4, 8) + 0.1)
# 绘图,符号是21,线是红色,
plot(x, y, type="b",
     pch=21, col="red",
     yaxt="n", lty=3, ann=FALSE)
# 在图上绘制第二条线,蓝色
lines(x, z, type="b", pch=22, col="blue", lty=2)
# 在左边建立y轴,坐标轴刻度为x向量,颜色红色,垂直于坐标抽
axis(2, at=x, labels=x, col.axis="red", las=2)
# 在右边建立坐标轴,刻度为z向量保留两位小数,蓝色,垂直,刻度文字为70%,刻度线向外0.01
axis(4, at=z, labels=round(z, digits=2),
     col.axis="blue", las=2, cex.axis=0.7, tck=-.01)
# 为坐标轴添加文本,右边,添加y=1/x,垂直于坐标,蓝色,正常大小
mtext("y=1/x", side=4, line=3, cex.lab=1, las=2, col="blue")
# 添加坐标轴标签
title("An Example of Creative Axes",
      xlab="X values",
      ylab="Y=X")
par(opar)
自定义坐标轴

3.4.3 参考线

abline()可以用来添加参考线,格式:abline(h=yvalues, v=xvalues),里面也是可以指定其他图形参数。

3.4.4 图例

当图形中包含的数据不止一组时,图例可以判断。legend()来添加图例:legend(location, title, legend, ...)
两种药物响应情况:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
opar <- par(no.readonly=TRUE)
par(lwd=2, cex=1.5, font.lab=2)
plot(dose, drugA, type="b",
     pch=15, lty=1, col="red", ylim=c(0, 60),
     main="Drug A vs. Drug B",
     xlab="Drug Dosage", ylab="Drug Response")
lines(dose, drugB, type="b",
      pch=17, lty=2, col="blue")
abline(h=c(30), lwd=1.5, lty=2, col="gray")
library(Hmisc)
minor.tick(nx=3, ny=3, tick.ratio=0.5)
legend("topleft", inset=.05, title="Drug Type", c("A","B")
       lty=c(1, 2), pch=c(15, 17), col=c("red", "blue"))
par(opar)
比较完整的图表,但就是图例的大小没法控制好

3.4.5 文本标注

通过函数text()mtext()将文本添加到图形上。前者可向绘图区域内部添加文本,而后者向图形的四个边界之一添加文本。

两个函数的选项

示例:

attach(mtcars)
plot(wt, mpg,
     main="Mileage vs. Car Weight",
     xlab="Weight", ylab="Mileage",
     pch=18, col="blue")
text(wt, mpg,
     row.names(mtcars),
     cex=0.6, pos=4, col="red")
detach(mtcars)
添加文本

3.4.6 数学标注

函数plotmath()可以为图形主体或边界上的标题、坐标轴名称或文本标注添加数学符号。

3.5 图形组合

在R中使用函数par()layout()可以组合多幅图形为一幅总括图形。图形参数mfrow=c(nrows, ncols)按行填充和mfcol=c(nrows, ncol)按列填充。示例:

attach(mtcars)
opar <- par(no.readonly=TRUE)
# 按行填充,2x2矩阵
par(mfrow=c(2,2))
# 画四幅图
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs. disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")
par(opar)
detach(mtcars)
2x2组合图

PS:这一部分内容确实比较多,整个下来比较累,进度比较慢,图形的参数确实比较多,要多练习,多用才可以。

相关文章

  • R语言实战 第三章 图形初阶 3.4-3.5

    来自 R语言实战 第三章 图形初阶 示例代码#####################第三章 图形初阶######...

  • R语言实战 第三章 图形初阶 3.1-3.3

    来自 R语言实战 第三章 图形初阶 示例代码#####################第三章 图形初阶######...

  • 第三章 图形初阶

    数据可视化,绝对是一门艺术。完美的数据,需要有完美的图片来展示。人类非常善于从视觉呈现中洞察关系。一幅精心绘制的图...

  • R语言实战__第3章 图形初阶

    第3章 图形初阶 3.1 使用图形 R可以在交互式对话总,通过逐条输入语句构建图形,逐渐完善图形特征,直至得到想要...

  • R action 3

    20171122(从有道迁移) 图形初阶 图形参数图形参数的选项来自定义一幅图形的多个特征(字体、颜色、坐标轴、标...

  • 《R语言实战》学习笔记目录

    第一章R语言介绍 第二章创建数据集 第三章图形初阶 第四章基本数据管理 第五章高级数据管理 第六章基本图形 因小鑫...

  • 二、图形初阶(1)

    1. 使用图形 attach( )绑定了数据框mtcars;plot( )打开了一个图形窗口并生成了一幅散点图,横...

  • R语言实战—2

    图形初阶 通过执行如plot()、hist()(绘制直方图)或boxplot()这样的高级绘图命令来创建一幅新图形...

  • 第3章 图形初阶

    《R语言实战》笔记系列 本章学习大纲 1.图形的创建和保存 2.自定义符号、线条、颜色和坐标轴 3.标注文本和标题...

  • R语言实战_图形初阶

    图形初阶 使用图形 R是一个惊艳的图形构建平台。这里我特意使用了“构建”一词。在通常的交互式会话中,你可以通过逐条...

网友评论

    本文标题:第三章 图形初阶

    本文链接:https://www.haomeiwen.com/subject/aclfyxtx.html