R语言:表格的条形图转化

Python025

R语言:表格的条形图转化,第1张

接着上一篇文章 R语言:表格的线图转化 继续练习,这次是直方图。

前段时间在视频课程学习过直方图案例,有一个citysales表格,表示3种产品,在5个城市的销量。

运用的是“barplot”命令,程序如下:

citysales<-read.csv("citysales.csv")

x<-barplot(as.matrix(citysales[,2:4]),beside=TRUE,

legend.text=citysales$City,args.legend=list(bty="n",horiz=TRUE),

col=brewer.pal(5,"Set1"),border="black",ylim=c(0,100))

自己用来练习的表格,还是上次那个。

因为这次想用案例中的色库,所以安装了“RColorBrewer”包。

然后按照案例中语句,写了一下。颜色参数有一点改动。

barplot(as.matrix(mydata[,2:3]),las=2,beside=TRUE,col=brewer.pal(2,"Set2"))

噫,为什么2006一列,2016一列?看回案例,barplot命令是根据列分组的,所以这里也根据了两个年份分组。

这样的图形不是我想要的,所以用 t命令 把mydata的行列互相置换了一下。

b<-as.matrix(mydata[,2:3]) c<-t(b)

barplot(c,las=2,beside=TRUE,col=brewer.pal(2,"Set2"))

这次出现的图形就对了,但是x轴的图标不对。区域名消失了。

很奇怪的是,如果整个mydata置换,就会把整个matrix都变成字符,barplot就不能只打印其中的两列,必须置换成数值

图形跟上图一样,就是没有x轴的数字了。

如果索性在excel表里手动置换行和列,也是可以的。

barplot(as.matrix(mydata2[,2:16]),las=2,beside=TRUE,col=brewer.pal(2,"Set2"),ylim=c(0,95000))

如果去掉“beside=TRUE”语句,则形成层叠图。再加上增长幅度曲线rate。但是因为增长幅度数值相对于几万的房价比较小,所以乘以5000倍才能看得见。

lines(mydata$rate*5000,col="gold")

这里又出现了一个缺点,涨幅曲线和柱状图差了一个,当然在excel表是完全对应的。还没有找出原因。望各位大神指教。

这次的练习:

1.条形图的转化

2.两种图形的叠加

3.RColorBrew包及相关命令

不明白/没做出来的地方

1.用barplot打印matrix的格式

2.matrix怎么加表头

3.Line和条形图的对应

# 一、R基本操作# 1、将数据文件mydata1.txt按照以下要求整理成标准形式。#(1)读入数据文件mydata.txt命名为insurance。insurance<-read.table("mydata1.txt")head(insurance)dim(insurance)#192个数据#(2)将insurance转换为3列的矩阵。insurance<-matrix(insurance$V1,nrow = 64,ncol = 3)#nrow =192/3=64insurance#(3)将insurance转换为数据框。insurance<-as.data.frame(insurance)class(insurance)#(4)将列名命名为"District", "Holders"和"Claims"。names(insurance)<-c("District", "Holders","Claims")insurance#(5)随机无放回抽取50行数据。sub<-insurance[sample(1:nrow(insurance),50),]#无放回不用设置replacesub#(6)将抽样数据写入result1.txt。write.table(sub,"result1.txt",row.names = FALSE)####################################################################### 2、将数据文件mydata2.txt按照以下要求整理成标准形式。#(1)读入数据文件mydata2.txt命名为iris。iris<-read.table("mydata2.txt")head(iris)dim(iris)#600个数据#(2)将iris转换为4列的矩阵。iris<-matrix(iris$V1,nrow = 150,ncol = 4)#nrow =600/3=150iris#(3)将iris转换为数据框。iris<-as.data.frame(iris)class(iris)#(4)将列名命名为"Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"。names(iris)<-c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")iris#(5)随机无放回抽取90行数据。sub<-iris[sample(1:nrow(iris),90),]#无放回不用设置replacesub#(6)将抽样数据写入result2.txt。write.table(sub,"result2.txt",row.names = FALSE)####################################################################### 3.将数据文件data.csv按照以下要求进行数据预处理。#(1)读入数据文件data.csv命名为nhanes2。nhanes2<-read.csv("data.csv")#(2) 载入缺失值处理所需要的包。install.packages("lattice")install.packages("MASS")install.packages("nnet")library(lattice)library(MASS)library(nnet)#(3) 判断nhanes2是否存在缺失值。sum(is.na(nhanes2))#(4) 利用插补法处理chl变量的缺失值。sub=which(is.na(nhanes2[,4])==TRUE)#在数据集中chl变量是第4列,返回nhanes2数据集中第4列为NA的行dataTR<-nhanes2[-sub,]#将第4列不为NA的数存入数据集dataTRdataTE<-nhanes2[sub,]#将第4列为NA的数存入数据集dataTE中dataTE[,4]<-sample(dataTR[,4],length(dataTE[,4]),replace = T)#在非缺失值中简单抽样dataTE #(5) 将插补法处理后的数据写入result3.txt。write.table(dataTE,"result3.txt",row.names = FALSE)#############################################################################################################################################二、函数调用#1、测得某班学术X(身高(cm))与Y(体重(kg))的数据如下,试画出散点图,建立线性回归方程,并作进一步分析。# (1) 建立数据集,并画出散点图,考察数据点的分布趋势,看是否呈直线条状分布。x1<-c(171,175,159,155,152,158,154,164,168,166,159,164)#身高y1<-c(57,64,41,38,35,44,41,51,57,49,47,46)#体重#构建数据集model <- data.frame(x1,y1) #探索性分析-做散点图查看数据的分布情况:plot(x1,y1)# (2)进行回归分析,列出回归方程,画拟合线,并对结果进行解读。# 用lm()函数构建模型lm.reg<-lm(y1~ x1)# 添加回归曲线查看拟合效果 abline(lm.reg) #模型解读summary(lm.reg)# (3)对回归系数进行假设检验。anova(lm.reg) # 回归模型的方差分析summary(lm.reg) #回归系数t检验:提取模型计算结果,其中有t检验的结果# (4)对回归模型进行诊断。#模型检验对方程进行进一步检验,以检查回归方程是否满足模型的先验条件及模型的稳健性。par(mfrow=c(2,2))#画布分面plot(lm.reg)#结果解读:#1.左上图:残差与拟合图,理论上散点应该散乱的分布在横线两侧;#2.右上图:正太Q-Q图,用于检验因变量的正太分布性,若服从正太分布,则散点应分布在一条直线线#3.左下图:齐方差检验,若满足其方差,则散点在水平线周围随机分布#4.右下图:独立性检验,即一个样本是否会影响另一个样本##################################################################2、研究某抗心律失常药对电刺激狗右心室致颤阙的影响,实验测得狗静脉注射不同剂量的抗心律失常药与右心室致颤阙的数据如下,试画出散点图,建立线性回归方程,并作进一步分析。# (1) 建立数据集,并画出散点图,考察数据点的分布趋势,看是否呈直线条状分布。x <- c(1,3,5,7,9)y <- c(8.03, 14.97, 19.23, 27.83, 36.23)#构建数据集model <- data.frame(x,y) #探索性分析-做散点图查看数据的分布情况:plot(model)#画散点图# (2)进行回归分析,列出回归方程,画拟合线,并对结果进行解读。# 用lm()函数构建模型fm <- lm(y ~ x)#建立回归模型fm# 添加回归曲线查看拟合效果abline(fm)# 添加回归曲线至散点图 #模型解读summary(fm)# (3)对回归系数进行假设检验。anova(fm) # 回归模型的方差分析summary(fm) # 提取模型计算结果,其中有t检验的结果# (4)对回归模型进行诊断。#模型检验对方程进行进一步检验,以检查回归方程是否满足模型的先验条件及模型的稳健性。par(mfrow=c(2,2))#画布分面plot(fm)#结果解读:#1.左上图:残差与拟合图,理论上散点应该散乱的分布在横线两侧;#2.右上图:正太Q-Q图,用于检验因变量的正太分布性,若服从正太分布,则散点应分布在一条直线线#3.左下图:齐方差检验,若满足其方差,则散点在水平线周围随机分布#4.右下图:独立性检验,即一个样本是否会影响另一个样本################################################################### 3、countries数据集含有69个国家和地区的出生率与死亡率。# (1) 请使用K-均值聚类将样本点聚为3个类别。countries=read.csv("countries.csv")head(countries)#查看前6行names(countries)=c("country","birth","death")#修改变量名称var=as.character(countries$country)#将变量country转为字符型并赋值给varfor(i in 1:69) row.names(countries)[i]=var[i]#将数据集的行名命名为国家名称km1=kmeans(countries[,-1],center=3)#用kmeans算法对countries数据集进行聚类# (2) 输出聚类结果及各类别的中心点坐标。km1$cluster#获取类别km1$centers#获取中心点坐标# (3) 绘制聚类结果将中心点以星号标识。#画出聚为四类的类别图,标注中心点。plot(countries[,-1],pch=c(1,2,3))#将中心点用星号标示出来points(km1$centers,pch=8,col="red")#对中心点添加标注legend(km1$centers[1,1],km1$centers[1,2],"Center_1",bty="n",xjust=0.5,cex=0.8)legend(km1$centers[2,1],km1$centers[2,2],"Center_2",bty="n",xjust=0.5,cex=0.8)legend(km1$centers[3,1],km1$centers[3,2],"Center_3",bty="n",xjust=0.5,cex=0.8)# (4) 判断与中国大陆同属于一个类别的国家和地区有哪些。cluster_CHINA=km1$cluster[which(countries$country=="CHINA")]which(km1$cluster==cluster_CHINA)###############################################################################################################################三、数据分析# 1、使用arules软件包中的Groceries数据集,该数据集是某一食品杂货店一个月的真实交易数据,使用R完成以下要求:(软件包:arules;数据集:Groceries; 函数:apriori())# (1)利用apriori()函数进行关联分析,支持度为0.01,置信度为0.5。install.packages("arules")library(arules)data("Groceries")rules0<-apriori(Groceries,parameter=list(support=0.01,confidence=0.5))inspect(rules0[1:10])# (2)利用sort()函数按照支持度排序。rules.sorted_sup<-sort(rules0,by="support")inspect(rules.sorted_sup[1:5])# (3)捆绑销售:寻找蛋黄酱(mayonnaise)的捆绑商品。(supp=0.001,conf=0.1,minlen=2, maxlen=6)rules1=apriori(Groceries,parameter=list(minlen=2,maxlen=6,supp=0.001,conf=0.1),appearance=list(rhs="mayonnaise",default="lhs"))inspect(rules1)# (4)查看销量最高的商品。itemsets_apr=apriori(Groceries,parameter=list(supp=0.001,target="frequent itemsets"),control=list(sort=-1))inspect(itemsets_apr[1:5])# (5)适合捆绑销售的商品。(supp=0.001,minlen=2, maxlen=3)itemsets_apr1=eclat(Groceries,parameter=list(supp=0.001,minlen=2,maxlen=3,target="frequent itemsets"),control=list(sort=-1))inspect(itemsets_apr1[1:5])# (6)关联规则的可视化(support=0.001,con=0.5)install.packages("arulesViz")library(arulesViz)rules5=apriori(Groceries,parameter=list(support=0.002,con=0.5))rules5plot(rules5)######################################################################## 2、根据breast-cancer-wisconsin.csv威斯康星州乳腺癌数据集,通过对数据的分析,提取出关键特征来判断乳腺癌患病情况。(软件包:rpart;函数:rpart()。)# (1)属性名依次设置为"编号","肿块厚度","肿块大小","肿块形状","边缘黏附","单个表皮细胞大小","细胞核大小","染色质","细胞核常规","有丝分裂","类别"),并将类别为2的设为"良性",为4的设为"恶性"。install.packages("rpart")library(rpart)install.packages("rpart.plot")library(rpart.plot)#############加载数据breast.cancer<-read.csv('breast-cancer-wisconsin.csv',header=F)head(breast.cancer)#数据整理names(breast.cancer)=c("编号","肿块厚度","肿块大小","肿块形状","边缘黏附","单个表皮细胞大小","细胞核大小","染色质","细胞核常规","有丝分裂","类别")breast.cancer$类别[breast.cancer$类别==2]="良性"breast.cancer$类别[breast.cancer$类别==4]="恶性"head(breast.cancer)# (2)抽取训练数据集为原数据的70%,测试数据集取30%。#数据预处理(分层抽样,划分训练集和测试集)#分别计算良性和恶性组中应抽取测试集样本数,记为a,ba=round(0.3*sum(breast.cancer$类别=="良性"))b=round(0.3*sum(breast.cancer$类别=="恶性"))ab #输出a,b值install.packages("sampling")library(sampling)#使用strata函数对数据集中的“分组油耗”变量进行分层抽样sub=strata(breast.cancer,stratanames="类别",size=c(b,a),method="srswor")sub #所抽出的所有测试集样本信息#生成训练集train1和测试集test1train1=breast.cancer[-sub$ID_unit,]test1=breast.cancer[sub$ID_unit,]nrow(train1)nrow(test1) #显示训练集和测试集的行数,检查两者比例是否为7:3# (3) minsplit=5,建立决策树。#CART建立分类树formula_cla=类别~肿块厚度+肿块大小+肿块形状+边缘黏附+单个表皮细胞大小+细胞核大小+染色质+细胞核常规+有丝分裂cla1=rpart(formula_cla,train1,method="class",minsplit=5)#cla1# (4)选择cp=0.05来剪枝。######修改cp的值cla2=rpart(formula_cla,train1,method="class",minsplit=5,cp=0.05)cla2# (5)画出type为2和4的树图。rpart.plot(cla1,type=2)#修改typerpart.plot(cla1,type=4) # (6)测试数据进行预测,并输出混淆矩阵,给出模型准确率为。#预测pre1=predict(cla1,test1,type="class")pre1table(test1$类别,pre1)#获取混淆矩阵#计算样本错误率error1<-sum(as.numeric(pre1!=test1$类别))/nrow(test1)error1#################################################################### 3、美国科罗拉多州某加油站连续 57 天的OVERSHORTS序列“OVERSHORTS.csv”# (1) 判断该序列的平稳性与纯随机性。# (时序图检验、白噪声检验)install.packages("fUnitRoots")install.packages("TSA")install.packages("forecast")install.packages("zoo")library(fUnitRoots)library(TSA)library(forecast)library(zoo)#读取数据c<-read.csv("OVERSHORTS.csv")#转换为时间序列overshort<-ts(c$overshort,start = 1)#平稳性,纯随机(白噪声检验)## 绘制序列的时间序列图plot.ts(overshort, xlab = "time", ylab = "prop")##对序列做单位根检验unitrootTest(overshort)##对序列做白噪声检验Box.test(overshort, lag = 1, type = "Ljung-Box")# (2) 如果序列平稳且非白噪声,选择适当模型拟合该序列的发展。(10分)# (模型的识别、参数估计(模型显著性、模型参数的显著性))#模型识别##观察自相关,偏自相关图,模型定阶par(mfrow=c(1,2))acf(overshort)###衰减到零是突然的,所以自相关系数1阶截尾pacf(overshort)### 衰减到零不是突然的,所以偏相关系数托尾# 推荐模型为 MA(1)##或者对序列进行模型识别,自动定阶auto.arima(overshort)# 推荐模型为 MA(1)#参数估计###模型检验x.fit<-arima(overshort,order=c(0,0,1),method="ML")x.fit##对残差x.fit$residual进行白噪声检验for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))##P>0.05,接受原假设,即残差为白噪声,所以拟合模型显著有效####参数检验###模型参数的显著性检验t1<--0.8477/0.1206pt(t1,df=56,lower.tail=T) ###p<0.05参数显著非零t0<--4.7942/1.0253pt(t0,df=56,lower.tail=T) ###p<0.05参数显著非零# (3) 利用拟合模型,预测该加油站未来5天的OVERSHORTS。(10分)# (模型预测、绘制预测图)####模型预测c<-read.csv("OVERSHORTS.csv")x<-ts(c$overshort,start=1)x.fit<-arima(x,order=c(0,0,1))x.fitx.fore<-forecast(x.fit,h=5)#预测x.foreplot(x.fore)###############################################################4、使用是survival软件包中的“pbc”数据集,该数据集记录的是肝硬化数据, 使用R完成一下要求:(软件包:survival;数据集:pbc; 函数:Surv()、survfit()、survdiff()、coxph()、cox.zph(), 将答案保存在“姓名.doc”文件中。)# (1)生成生存分析对象,拟合生存曲线模型。install.packages("survival") #安装survival包library(survival) #加载survival包#使用survival包自带的“pbc”数据集为例(418*20) data("pbc")str(pbc)head(pbc)#生成生存分析对象Sur_Obj<-Surv(pbc$time,pbc$status)Sur_Obj#拟合曲线模型model<-survfit(Sur_Obj~1) summary(model)# (2)两种方法绘制生存曲线。plot(model,ylab = "生存率",xlab="天")#用survminer进行漂亮的展示install.packages("survminer")library(survminer) ggsurvplot(model, data = pbc)# (3)进行单因素比较分析,并进行结果解释。#survdiff(formula)函数进行log-rank检验。survdiff(Sur_Obj~pbc$trt) #trt是分组条件# (4)考虑年龄,性别以及trt是否会影响肝硬化的生存时间,进行多因素分析Cox模型的建立,并进行结果解释。coxmodel<-coxph(Sur_Obj~pbc$age+pbc$sex+pbc$bili)coxmodel# (5)模型诊断——PH检验。zphmodel<-cox.zph(coxmodel)zphmodel############################################################### 5、life.csv为50位急性淋巴细胞白血病病人的数据,包括:入院治疗时取得外辕血中细胞数X1,淋巴结浸润等级X2,出院后有无巩固治疗X3(1表示有巩固治疗,0表示无巩固治疗);随访后,变量Y=0表示生存期在1年以内,Y=1表示生存时间在1年以上,使用R完成一下要求:(函数:glm(),predict()。)# (1)建立全变量logistic回归,对模型结果进行解释。life<-read.csv("life.csv")#建立全变量logistic回归glm.sol<-glm(Y~X1+X2+X3, family=binomial, data=life)#回归模型解读summary(glm.sol)# (2)预测当X1=5,X2=2,X3=0时,y的概率是多少?pre<-predict(glm.sol, data.frame(X1=5,X2=2,X3=0))p<-exp(pre)/(1+exp(pre))p# (3)预测当X1=5,X2=2,X3=1时,y的概率是多少?(6分)pre<-predict(glm.sol, data.frame(X1=5,X2=2,X3=1))p<-exp(pre)/(1+exp(pre))p# (4)对回归模型参数进行检验,用step()函数做变量筛选。step(glm.sol)glm.new<-glm(Y~X2+X3, family=binomial, data=life)summary(glm.new)# (5)对筛选后的变量进行建模,预测。pre<-predict(glm.new, data.frame(X2=2,X3=0))p<-exp(pre)/(1+exp(pre))ppre<-predict(glm.new, data.frame(X2=2,X3=1))p<-exp(pre)/(1+exp(pre))p

原贴转自生物统计家园,原贴只贴出了代码,没有画图,这里运行了一下代码,复习了一下R的绘图,共有20多个。

案例01-基本绘图

cars <- c(1, 3, 6, 4, 9)

plot(cars)

案例 1-基本绘图

案例02-增添标题

cars <- c(1, 3, 6, 4, 9)

plot(cars, type="o", col="blue") # 绘制蓝色折线图,

title(main="Autos", col.main="red", font.main=4) # 增添标题,红色,粗斜体

案例 2-增添标题

注1:其中type设置画图的类型,有九种可能的取值,分别代表不同的样式:(1)'p')画点;(2)'l'画线5;(3)'b'同时画点和线,但点线不相交;(4)'c'将type= 'b'中的点去掉,只剩下相应的线条部分;(5)'o'同时画点和线,且相互重叠,这是它与type = 'b'的区别;(6)'h'画铅垂线;(7)'s'画阶梯线,从一点到下一点时,先画水平线,再画垂直线;(8)'S'也是画阶梯线,但从一点到下一点是先画垂直线,再画水平线;(9)'n'作一幅空图,没有任何内容,但坐标轴、标题等其它元素都照样显示。

注2:font.main用于控制字体,分别为1: 正常,2: 斜体,3: 粗体,4: 粗斜体

案例03-增添新曲线

cars <- c(1, 3, 6, 4, 9)

trucks <- c(2, 5, 4, 5, 12)

plot(cars, type="o", col="blue", ylim=c(0,12)) # ylim控制y轴的范围

lines(trucks, type="o", pch=22, lty=2, col="red") #添加折线,lty=2表示虚线

title(main="Autos", col.main="red", font.main=4)

案例 3-增添新曲线

注1:pch控制点的符号;pch = 19)实圆点、pch = 20)小实圆点、pch = 21)圆圈、pch = 22)正方形、pch = 23)菱形、pch = 24)正三角尖、pch= 25)倒三角尖,其中,21-25可以填充颜色(用bg参数)

注2:lty控制连线的线型,可以是整数(1: 实线,2: 虚线,3: 点线,4: 点虚线,5: 长虚线,6: 双虚线),或者是不超过8个字符的字符串(字符为从"0"到"9"之间的数字)交替地指定线和空白的长度,单位为磅(points)或象素,例如lty="44"和lty=2效果相同。线条虚实样式:0 )不画线,1 )实线,2 )虚线,3 )点线,4 )点划线,5 )长划线,6 )点长划线;或者相应设置如下字符串(分别对应前面的数字):'blank', 'solid', 'dashed', 'dotted', 'dot dash', 'longdash', 'twodash';还可以用由十六进制的数字组成 的字符串表示线上实线和空白的相应长度,如'F624'

案例04-添加图例

cars <- c(1, 3, 6, 4, 9)

trucks <- c(2, 5, 4, 5, 12)

g_range <- range(0, cars, trucks)

plot(cars, type="o", col="blue", ylim=g_range, axes=FALSE, ann=FALSE) #axes=FALSE, ann=FALSE表示不绘制坐标轴与标题

axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))

axis(2, las=1, at=4*0:g_range[2])

# axis(),2表示坐标轴在左侧,at=4*0:g_range[2]表示刻度范围为(0:g_range[2]),#每4个单位显示一个刻度

box()

lines(trucks, type="o", pch=22, lty=2, col="red")

title(main="Autos", col.main="red", font.main=4) #添加总标题

title(xlab="Days", col.lab=rgb(0,0.5,0)) # 添加x轴标题

title(ylab="Total", col.lab=rgb(0,0.5,0)) # 添加y轴标题

legend(1, g_range[2], c("cars","trucks"), cex=0.8, col=c("blue","red"), pch=21:22, lty=1:2)

# legend(),1,g_range[2]表示图例左上角的坐标;c("cars","trucks")标签,cex=0.8字体的放大倍数

案例 4-添加图例

案例5-从文本读取数据绘图

将下列数据复制到一个txt文件中,命名为data.txt,放至C盘目录下

cars trucks suvs

1 2 4

3 5 4

6 4 6

4 5 6

9 12 16

autos_data <- read.table("C:/data.txt", header=TRUE, sep=" ") #sep=” “绰号中间为一空格,如果不输入空格,则会出现数据读取错误

max_y <- max(autos_data)

plot_colors <- c("blue","red","forestgreen")

png(filename="C:/figure.png", height=346, width=460, bg="white") # 将图片输出到C目录,名字为figure.png,大小为346*460,背景色为白色

plot(autos_data$cars, type="o", col=plot_colors[1], ylim=c(0,max_y), axes=FALSE, ann=FALSE)

axis(1, at=1:5, lab=c("Mon", "Tue", "Wed", "Thu", "Fri"))

axis(2, las=1, at=4*0:max_y)

box()

lines(autos_data$trucks, type="o", pch=22, lty=2, col=plot_colors[2])

lines(autos_data$suvs, type="o", pch=23, lty=3, col=plot_colors[3])

title(main="Autos", col.main="red", font.main=4)

title(xlab= "Days", col.lab=rgb(0,0.5,0))

title(ylab= "Total", col.lab=rgb(0,0.5,0))

legend(1, max_y, names(autos_data), cex=0.8, col=plot_colors, pch=21:23, lty=1:3)

dev.off()

案例 5-从文本读取数据绘图

案例06-输出图片到PDF以及坐标轴的控制

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

plot_colors <- c(rgb(r=0.0,g=0.0,b=0.9), "red", "forestgreen")

pdf(file="C:/figure.pdf", height=3.5, width=5)

par(mar=c(4.2, 3.8, 0.2, 0.2)) #mar控制绘图区别的大小,4个数字代表绘图区域距离下,左,上,右边界的行数,类似的mai则是英寸数

plot(autos_data$cars, type="l", col=plot_colors[1], ylim=range(autos_data), axes=F, ann=T, xlab="Days",ylab="Total", cex.lab=0.8, lwd=4)

axis(1, lab=F)

text(axTicks(3), -0.8, srt=45, adj=0.5,labels=c("Mon", "Tue", "Wed", "Thu", "Fri"),xpd=T, cex=0.8)

# axTicks()函数的功能是计算坐标轴,取值分别为1,2,3,4。1是计算下方坐标轴,2是左,3是上,4是右。

# text()函数的前两个数字是说明坐标轴标签的位置,str=标签倾斜的角度,adj取值为0到1,精细调整坐标轴的左右位置,0是最左边,1是最右边,0.5居中

axis(2, las=1, cex.axis=0.8)

box()

lines(autos_data$trucks, type="l", lty=2, lwd=2, col=plot_colors[2])

lines(autos_data$suvs, type="l", lty=3, lwd=2, col=plot_colors[3])

legend("topleft", names(autos_data), cex=0.8, col=plot_colors, lty=1:3, lwd=2, bty="n")

# bty控制图形边框形状,可用的值为: "o", "l", "7", "c", "u" 和"]" (边框和字符 的外表相像)这些字符本身的形状对应着边框样式,比如(默认值)o表示四条边都显示,而c表示不显示右侧边如果bty="n"则不绘制边框

dev.off()

par(mar=c(5, 4, 4, 2) + 0.1) #恢复边界默认值

案例 6-输出图片到PDF以及坐标轴的控制

案例07-简单条形图

Bar Charts

cars <- c(1, 3, 6, 4, 9)

barplot(cars)

案例 7-简单条形图

案例08-条形图加标签

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

barplot(autos_data$cars, main="Cars", xlab="Days",ylab="Total", names.arg=c("Mon","Tue","Wed","Thu","Fri"),border="blue", density=c(10,20,30,40,50))

# density控制条形图中斜线的密度

案例 8-条形图加标签

案例09-分组条形图

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

data <- as.matrix(autos_data) #转化为矩阵

barplot(data, main="Autos", ylab= "Total",beside=TRUE, col=rainbow(5))

legend("topleft",c("Mon","Tue","Wed","Thu","Fri"),cex=0.6,bty="n", fill=rainbow(5))

案例 9-分组条形图

案例10-条形图的堆叠

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

par(xpd=T, mar=par()$mar+c(0,0,0,4))

# xpd对超出边界的图形的处理方式;取值FALSE把图形限制在作图区域内,出界的图形截去;取值TRUE出界的图形不截去

barplot(t(autos_data), main="Autos", ylab="Total", col=heat.colors(3), space=0.2, cex.axis=0.8, las=1,names.arg=c("Mon","Tue","Wed","Thu","Fri"), cex=0.8)

# space为条形间隔,las 坐标轴标签样式;取0、1、2、3四个整数之一,分别表示“总是平行于坐标轴”、“总是水平”、“总是垂直于坐标轴”和“总是竖直”。

legend(6.2, 30, names(autos_data), cex=0.8, fill=heat.colors(3))

par(mar=c(5, 4, 4, 2) + 0.1)

案例 10-条形图的堆叠

案例11-直方图

suvs <- c(4,4,6,6,16)

hist(suvs)

案例 11-直方图

案例12-直方图2

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

autos <- c(autos_data$cars, autos_data$trucks, autos_data$suvs)

hist(autos, col="lightblue", ylim=c(0,10))

案例 12-直方图2

案例13-直方图3

autos_data <- read.table("C:/data.txt", header=T, sep=" " )

autos <- c(autos_data$cars, autos_data$trucks, autos_data$suvs)

max_num <- max(autos)

hist(autos, col=heat.colors(max_num), breaks=max_num, xlim=c(0,max_num), right=T, main="Autos Histogram", las=1)

# right = TRUE (默认)直方图的范围是(a, b]左开右闭,right = FALSE区间为[a, b)

案例 13-直方图3

案例14-不均匀间隔直方图

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

autos <- c(autos_data$cars, autos_data$trucks, autos_data$suvs)

max_num <- max(autos)

brk <- c(0,3,4,5,6,10,16) # 建立不均匀的区间

hist(autos, col=heat.colors(length(brk)), breaks=brk,

xlim=c(0,max_num), right=F, main="Probability Density",

las=1, cex.axis=0.8, freq=F)

案例 14-不均匀间隔直方图

案例15-对数正态分布

r <- rlnorm(1000)

hist(r)

案例 15-对数正态分布

案例16-饼图

cars <- c(1, 3, 6, 4, 9)

pie(cars)

案例 16-饼图

案例17-饼图2

cars <- c(1, 3, 6, 4, 9)

pie(cars,main="Cars",col=rainbow(length(cars)),labels=c("Mon","Tue","Wed","Thu","Fri"))

案例 17-饼图2

案例18-饼图3

cars <- c(1, 3, 6, 4, 9)

colors <- c("white","grey70","grey90","grey50","black")

car_labels <- round(cars/sum(cars) * 100, 1)

car_labels <- paste(car_labels, "%", sep="")

pie(cars, main="Cars", col=colors, labels=car_labels,cex=0.8)

legend(1.5, 0.5, c("Mon","Tue","Wed","Thu","Fri"), cex=0.8,

fill=colors)

案例 18-饼图3

案例19-点图

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

dotchart(t(autos_data))

案例 19-点图

案例20-点图上色

autos_data <- read.table("C:/data.txt", header=T, sep=" ")

dotchart(t(autos_data), color=c("red","blue","darkgreen"),

main="Dotchart for Autos", cex=0.8)

案例 20-点图上色

案例21-Misc

plot(1, 1, xlim=c(1,5.5), ylim=c(0,7), type="n", ann=FALSE)

text(1:5, rep(6,5), labels=c(0:4), cex=1:5, col=1:5)

# text(1:5, rep(6,5))表示其坐标,分别为(1,6),(2,6),(3,6),(4,6),(5,6)

points(1:5, rep(5,5), cex=1:5, col=1:5, pch=0:4) # 添加点,倍数逐步放大

text((1:5)+0.4, rep(5,5), cex=0.6, (0:4)) # 添加文字0到4

points(1:5, rep(4,5), cex=2, pch=(5:9)) #添加点,类型为pch=5到9

text((1:5)+0.4, rep(4,5), cex=0.6, (5:9)) # 添加文字5到9,(5:9)表示添加的文字

points(1:5, rep(3,5), cex=2, pch=(10:14))

text((1:5)+0.4, rep(3,5), cex=0.6, (10:14))

points(1:5, rep(2,5), cex=2, pch=(15:19))

text((1:5)+0.4, rep(2,5), cex=0.6, (15:19))

points((1:6)*0.8+0.2, rep(1,6), cex=2, pch=(20:25))

text((1:6)*0.8+0.5, rep(1,6), cex=0.6, (20:25))