看书笔记——R语言
【数据科学:R语言实战】
Chapter 7 数据可视化——R图形
7.1 功能包
- classIn:包含了单变量组距
- ggpolot2:具有大量的图形特征
- gpclib:用于多边形裁剪
- hexbin:用于双变量数据操作
- latticist:R与Latticist程序之间的界面
- mapdata:含有可直接添加至地图的数据
- maps:包含各种地理区域的地图
- maptools:含有用于使用地图的访问机制
- playwith:包含了R和GTK+等其他程序之间的界面
- RColorBrewer:用于地图着色
- RgoogleMaps:包含了R中使用的谷歌地图
7.1.1 交互式图形
R与GTK+工具包(or GIMP 是创建图形界面的多平台工具包)配合,可以交互式修改图形。playwith()将若干参数传递至GTK+空间。
playwith()
- 参数
expr 包含了用于创建图表的表达式
title 可选的窗口标题
labels 标签的特征向量
data.points 数据点的向量
viewport 表示数据空间的视野
parameters 包含了数据的简单控制(键入)
tools GTK+工具的列表
ini.actions 最初运行得操作列表
…
install.packages("playwith")
library("playwith") ##需要安装GTK+,安装GTK+后需要重新启动R
data <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv", sep=";") #葡萄酒质量数据
plot(data$fixed.acidity) ##非挥发性酸的简易图
playwith(plot(data$fixed.acidity)) ##之后就可以用GTK+工具包操作图形
7.1.2 latticist功能包
latticist和GTK+有相交知识区域,latticist对R的版本有较高要求。
install.packages("latticist")
library("latticist")
latticist(data$fixed.acidity)
1.双变量分箱显示
hexbin()
- 参数
x、y 待使用的双变量数据向量
xbins x刻度的二进制数量
shape 绘图区域的形状=y(高度)/x(宽度)
xbnds、ybnds 水平和垂直限度
xlab、ylab 可选的水平和垂直标签
数据源:华盛顿大学提供的机场数据,包含了13000个机场经纬度,用hexbin()核对坐标并表示位置
data <- read.csv("http://faculty.washington.edu/kenrice/sisg-adv/airportlocations.csv")
summary(data)
install.packages("hexbin")
library(hexbin)
bin <- hexbin(data$Latitude,data$Longitude);bin ##函数的分箱操作
plot(bin) ##经纬度对应xy,颜色深度表示的是密度
2.测绘
maps()生成标准地图,案例中使用的是美国地图
- 参数
database 包含world、usa、state、county数据库,默认为world库
regions 绘制多边形向量:north:boston
exact 默认FALSE,"TRUE"表示使用确切的区域匹配
boundary 默认FALSE,“TRUE”表示绘边界
interior 默认FALSE,“TRUE”表示绘制国内部分
projection 投影字符串,标准是“mercator”
parameters 投影参数
orientation 绘制地图的向量,包含经纬度及旋转
fill 默认FALSE,“TRUE”表示填充地图
col 填充颜色
**plot ** 用于确定是否从函数调回图表
add 是否将绘图点添加至图表
namesonly 是否返回区域名称向量
xlim、ylim 经纬度范围
wrap 是否省略离开屏幕行
resolution 分辨率
bg 是否绘制背景
mar 使用的页边
myborder 边界的坐标向量
install.packages("mapdata") #library(mapdata)
map(database="usa", col="gray90", fill=TRUE) ##usa
3.绘制地图上的点
地图与数据结合
point()
- 参数
x 绘制的坐标点
pch 点的字符
**col ** 点颜色
bg 点背景
cex 膨胀因数,使得某些点较大
**lwd ** 行宽
library(maps)
library(maptools)
library(RColorBrewer)
install.packages("classInt")
library(classInt)
install.packages("gpclib")
library(gpclib)
library(mapdata)
map("worldHires") ##世界地图
points(data$Longitude,data$Latitude,pch=16,col="red",cex=1) ##绘制机场位置,
require(graphics)
head(quakes) ##quakes程序库的地震数据
mean(quakes$mag)
map()
points(quakes$long,quakes$lat,pch=".",col="red",cex=1) ##完整的世界地图数据
lon <- mean(quakes$lon);lat <- mean(quakes$lat)
orient <- c(lat,lon,0)
x <- c(min(quakes$lon)/2,max(quakes$lon)*1.5) #存在负数所以对经纬度进行调整
y <- c(min(quakes$lat)-10,max(quakes$lat)+10)
map(database= "world", ylim=y, xlim=x, col="grey80", fill=TRUE)
points(quakes$long,quakes$lat,pch=".",col="red",cex=quakes$mag/2)
5.Google地图
RgoogleMaps()R上的谷歌地图,存在一定的不兼容问题
library(RgoogleMaps)
terrain <-GetMap(center=c(lat,lon),zoom=5,maptype="terrain",destfile="terrain.png",scale=c(320,320)
markers <- cbind.data.frame(quakes$lat,quakes$long,"small","red","") #表示地震数据
names(markers) <- c("lat","lon","size","col","char")
terrain <- GetMap.bbox(center=c(lat,lon),zoom=5,maptype="terrain",destfile="terrain2.png",lonR=range(quakes$long),latR=range(quakes$lat),markers=markers)
7.1.3 ggplot2功能包
qplot(lat,long,data=quakes,color=mag) ##斐济地震数据
qplot(lat,long,data=quakes,color=mag,size=depth)
qplot(lat,long,data=quakes,color=mag,size=depth, alpha=0.5) ##因数调整颜色团的碰撞
qplot(height,weight,data=women,geom="line") ##线性图
qplot(School,data=painters,geom="bar") ##条形图
data <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv", sep=";") #葡萄酒质量数据
sa <- ggplot(data, aes(x=residual.sugar, y=alcohol)) ##ggplot需要将绘图信息保存在变量中
sa <- sa + geom_line();sa
##把特征当做Facet来拆分数据,基于酒的质量水平,得到关系图
sa + facet_grid(. ~ quality) ##.开头为水平布局
sa + facet_grid(quality ~ .) ##.结尾为垂直布局
####geom_smooth函数添加平滑因数
sa <- ggplot(data, aes(x=residual.sugar, y=alcohol))
sa <- sa + geom_line() ##拟合图
sa <- sa + geom_smooth();sa ##光滑拟合图
ggplot(data, aes(x=residual.sugar)) + geom_histogram(binwidth=.5) ##直方图
ggplot(data, aes(x=residual.sugar)) + geom_density() ##密度图
bp <- ggplot(data, aes(x=residual.sugar, y=alcohol))
bp <- bp + geom_boxplot() ##箱型图,基于酒的质量水平,得到关系图
bp + facet_grid(. ~ quality)