[读书笔记] R语言实战 (六) 基本图形方法
1. 条形图 barplot()
#载入vcd包
library(vcd)
#table函数提取各个维度计数
counts <- table(Arthritis$Improved)
counts
#绘制简单Improved条形图
#1行2列
par(mfrow=c(1,2))
barplot(counts, main = "simple Bar plot", xlab = "Improved",ylab = "Frequency")
#绘制水平条形图 horiz = TRUE
barplot(counts,main = "simple Bar plot", xlab = "Frequency",ylab = "Improved",horiz=TRUE)
#如果绘制的是一个有序因子,可以使用plot()函数快速创建一幅垂直条形图
#1行1列
par(mfrow=c(1,1))
plot(Arthritis$Improved,xlab = "Frequency",ylab = "Improved",horiz=TRUE)
#如果要绘制的变量是一个矩阵而不是一个向量,将会绘制堆砌条形图或者分组条形图
#生成Improved和Treatment列联表
counts <- table(Arthritis$Improved,Arthritis$Treatment)
counts
#绘制堆砌图
barplot(counts,main = "Stacked Bar plot",xlab = "Treatment",ylab = "Frequency",col = c('red','yellow','green'),legend = rownames(counts))
#绘制分组条形图
barplot(counts,main = "Grouped Bar plot",xlab = "Treatment",ylab = "Frequency",col = c('red','yellow','green'),legend = rownames(counts),beside = TRUE)
#条形图微调
#增加y边界大小
par(mar = c(5,8,4,2))
#las=2旋转条形标签
par(las = 2)
counts <- table(Arthritis$Improved)
#cex.names= 0.8缩小字体的大小
barplot(counts,main="Treatment Outcomes",horiz = TRUE,cex.names=0.8,names.arg = c("No Improvement","Some Improvement","Marked Imporvement"))
2. 饼图:饼图在商业世界中无所不在,然而多数统计学家,包括R相应文档的编写者,都对它持否定态度。相对于饼图,他们更推荐使用条形图或点图,因为相对于
面积,人们对长度的判断更为精确 pie() pie3D()
par(mfrow=c(2,2))
slices <- c(10,12,12.4,16,8)
lbls <- c("US","UK","Austrialia","Germany","France")
pie(slices,labels=lbls,main="simple Chart")
pct <- round(slices/sum(slices)*100)
#拼接字符串和比例数值
lbls2 <- paste(lbls," ", pct,"%",sep = "")
lbls2
pie(slices,labels=lbls2,col=rainbow(length(lbls2)),main="Pie chart with percentage")
#载入ploirix包
library(plotrix)
#画简单3D图
pie3D(slices,labels=lbls,explode = 0.4,main = "3D pei chart")
#从表格创建饼图
#table取得region的计数表
mytable <- table(state.region)
#names 函数取得列名,然后将列名和相应的计数拼接在一起
lbls3 <- paste(names(mytable),'\n',mytable,sep="")
pie(mytable,labels=lbls3,main="pie chart from a table\n{with sample sizes}")
3. 直方图 :可以展示连续变量的分布. hist(x,breaks=, freq = )
x是一个由数据值组成的数值向量,参数freq = FALSE表示根据概率密度而不是频数绘制图形,参数breaks用于控制数组的数量.
par(mfrow = c(2,2))
#简单直方图
hist(mtcars$mpg)
#指定组数和颜色
hist(mtcars$mpg,breaks=12,col='red',xlab="Miles Per Gallon",main="Colored histogram with 12 bins")
hist(mtcars$mpg,freq=FALSE,breaks=12,col='red',xlab="Miles Per Gallon",main="Histogram,rug plot, density curve")
rug(jitter(mtcars$mpg))
#添加核密度图
lines(density(mtcars$mpg),col='blue',lwd=2)
x <- mtcars$mpg
h <- hist(x,breaks=12,col='red',xlab="Miles Per Gallon",main="Histogram with normal curve and box")
#设置横轴范围和分度
xfit <- seq(min(x),max(x),length=40)
yfit <- dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <-yfit*diff(h$mids[1:2]*length(x))
lines(xfit,yfit,col='blue',lwd=2)
box()
4. 核密度图:核密度估计是用于估计随机变量概率密度函数的非参数方法
#当前图像参数列表
opar <- par(no.readonly = TRUE)
par(mfrow=c(2,1))
#默认条件创建
d <- density(mtcars$mpg)
plot(d)
d <- density(mtcars$mpg)
#添加标题和曲线
plot(d,main="kernel Density of Miles per Gallon")
polygon(d,col='red',border="blue")
#添加棕色轴须图
rug(mtcars$mpg,col="brown")
#可比较的核密度函数
#线宽为双倍
#还原初始设置
par(opar)
par(lwd=2)
library(sm)
attach(mtcars)
sm.density.compare(mpg,cyl,xlab='Miles per gallon')
cyl.f <- factor(cyl,levels=c(4,6,8),labels=c("4 cylinder","6 cylinder","8 cylinder"))
title(main="MPG Distribution by Car Cylinders")
#创建颜色向量
colfill <- c(2:(1+length(levels(cyl.f))))
legend(locator(1),levels(cyl.f),fill=colfill)
detach(mtcars)
5. 箱线图:boxplot()
boxplot(mtcars$mpg,main="Box plot",ylab="Miles per gallon")
#并列箱线图跨列比较
boxplot(mpg~cyl,data=mtcars,main="Car Mileage Data",xlab="Number of Cylinders",ylab="Miles per gallon")
#图中可以看到四缸,六缸,八缸耗油中位数不同
6. 点图:在简单水平刻度上绘制大量有标签值的方法, dotchart()
dotchart(mtcars$mpg,labels=row.names(mtcars),cex=.7,main="Gas Mileage for Car Models",xlab="Miles Per Gallon")
#点图通常在经过排序并且分组变量被不同符号和颜色区分开最有用
x <- mtcars[order(mtcars$mpg),]
#分组变量转化为因子
x$cyl <-factor(x$cyl)
x$color[x$cyl==4]<-'red'
x$color[x$cyl==6]<-'blue'
x$color[x$cyl==8]<-'dark green'
dotchart(x$mpg,labels=row.names(x),cex=.7,group=x$cyl,gcolor="black",color=x$color,pch=19,
main="Gas Mileage for Car models\n grouped by cylinder",xlab='Miles Per gallon')
[读书笔记] R语言实战 (六) 基本图形方法的更多相关文章
- [读书笔记] R语言实战 (一) R语言介绍
典型数据分析的步骤: R语言:为统计计算和绘图而生的语言和环境 数据分析:统计学,机器学习 R的使用 1. 区分大小写的解释型语言 2. R语句赋值:<- 3. R注释: # 4. 创建向量 c ...
- [读书笔记] R语言实战 (三) 图形初阶
创建图形,保存图形,修改特征:标题,坐标轴,标签,颜色,线条,符号,文本标注. 1. 一个简单的例子 #输出到图形到pdf文件 pdf("mygrapg.pdf") attach( ...
- [读书笔记] R语言实战 (二) 创建数据集
R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 ** R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...
- [读书笔记] R语言实战 (四) 基本数据管理
1. 创建新的变量 mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8)) #方法一 mydata$sumx<-mydata$x1+mydata$x ...
- [读书笔记] R语言实战 (十三) 广义线性模型
广义线性模型扩展了线性模型的框架,它包含了非正态的因变量分析 广义线性模型拟合形式: $$g(\mu_\lambda) = \beta_0 + \sum_{j=1}^m\beta_jX_j$$ $g( ...
- [读书笔记] R语言实战 (十四) 主成分和因子分析
主成分分析和探索性因子分析是用来探索和简化多变量复杂关系的常用方法,能解决信息过度复杂的多变量数据问题. 主成分分析PCA:一种数据降维技巧,将大量相关变量转化为一组很少的不相关变量,这些无关变量称为 ...
- [读书笔记] R语言实战 (五) 高级数据管理
1. 数值函数 1) 数学函数 2) 统计函数 3. 数据标准化 scale() 函数对矩阵或者数据框的指定列进行均值为0,标准化为1的标准化 mydata <- data.frame(c1=c ...
- 《R语言实战》读书笔记--为什么要学
本人最近在某咨询公司实习,涉及到了一些数据分析的工作,用的是R语言来处理数据.但是在应用的过程中,发现用R很不熟练,所以再打算学一遍R.曾经花一个月的时间看过一遍<R语言编程艺术>,还用R ...
- R语言实战(第二版)-part 1笔记
说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...
随机推荐
- [luogu3261 JLOI2015] 城池攻占 (左偏树+标记)
传送门 Description 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池.这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的 ...
- [luogu2047 NOI2007] 社交网络 (floyed最短路)
传送门 输入输出样例 输入样例#1: 4 4 1 2 1 2 3 1 3 4 1 4 1 1 输出样例#1: 1.000 1.000 1.000 1.000 题解 在进行floyed的过程中,顺便更新 ...
- OOP 面向对象 七大原则 (一)
OOP 面向对象 七大原则 (一) 大家众所周知,面向对象有三大特征继承封装多态的同时,还具有这七大原则,三大特征上一篇已经详细说明,这一篇就为大家详解一下七大原则: 单一职责原则,开闭原则,里氏 ...
- Java启动问题-Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099
环境一直跑的挺好的,突然报这么一个错误,百思不得其解. 网上查询之后才想起来,自己当时为了IE能运行浪潮服务器的远程console,将环境变量里面的java换成了32位版本的. 修改jre版本与环境变 ...
- 工具-VS CODE快捷键
快捷键 Ctrl+P 通过文件名或者标签名导航 Ctrl+Tab 在前一个文件和当前文件间切换 F1 打开全局命令 Ctrl+Shift+O will let you navigate ...
- 非阻塞IO函数
关于效率的优化:
- Java进化? Kotlin初探与集成Android项目
欢迎Follow我的GitHub, 关注我的CSDN. Kotlin是基于JVM的编程语言, 由JetBrains公司开发, 眼下已经开源. IntelliJ IDEA, PyCharm, Andro ...
- (十进制高速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3240 3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec M ...
- TCP打洞技术
//转http://iamgyg.blog.163.com/blog/static/3822325720118202419740/ 建立穿越NAT设备的p2p的TCP连接仅仅比UDP复杂一点点,TCP ...
- 基于servlet实现一个web框架
servlet作为一个web规范.其本身就算做一个web开发框架,可是其web action (响应某个URI的实现)的实现都是基于类的,不是非常方便,而且3.0之前的版本号还必须通过web.xml配 ...