服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

方法|R语言作图——数据读取、多元数据绘图与绘图命令

日期: 来源:学研录收集编辑:李学研


01

多元数据的R语言调用


R内置数据包dataset提供了大量的数据,使用R的内置数据集很方便,通常只要给出数据集名即可,而外部数据主要有电子表格、数据库、文本文件等形式。

1.从剪切板读取

Excel与R语言之间的数据交换过程:

(1)选择需要进行计算的数据块(如本例A1:B13),“Ctrl+C”。

(2)在R中使用

dat<-read.table("clipboard",header=T)

这里,dat为读入的R中数据集,clipboard为剪切板,header=T意味着读入变量名。F表示不读变量名,即不读表头。


2.从文件文本读取

读入文本数据的命令是read.table,但它对外部文件有特定的格式要求:第一行可以有该数据框的各变量名,随后的行中条目是各个变量的值。

将读取的txt文件放在工作目录下,查询工作目录使用函数getwd()。或者更改工作目录到文件所在位置。

如果文件不在工作目录下,写绝对路径并使用“\\”,如:c:\\tmp\\readtxt.txt

3.从Excel文件读取

一个Excel工作簿里有多个数据表(sheet),R语言可以直接读取Excel数据。
方法一:将Excel数据另存为csv格式,命令为:X=read.table(data.csv)
这种方法一次只能读工作簿里的一个数据表。
方法二:读取整个工作簿需要安装和调用RODBC包,再用odbc读。命令为:
library(RODBC)Rcode<-odbcConnectExcel("Rcode.xls")data<-sqlFetch(Rcode,"data")datacodedata<-sqlFetch(Rcode,"codedata")codedataclose(Rcode)


02

基于R语言的多元数据绘图



1.条形图

条形图绘制函数barplot(X,…),其中X为数值向量或数据框。

##在d3.1中选取A1:I32区域,然后拷贝。

X=read.table("clipboard",header=T)barplot(apply(X,1,mean)) ##按行作均值图

barplot(apply(X,2,mean))  ##按列做均值图

barplot(apply(X[,2:8],2,mean))   ##去掉“食品”按列作的均值图



barplot(apply(X,2,median))  ##按列做中位数图



barplot(apply(X,2,mean))  ##按列作均值图



2.饼

饼图绘制函数pie(X,…),其中X为数值向量或数据框。
pie(apply(X,2,mean))  ##按列作均值图



3.箱线图
箱线图绘制函数boxplot(x,….),x为数据框。
 boxplot(X)



boxplot(X,horizontal=T)  ##水平放置horizontal=T



4.星相图

星相图绘制stars(x,full=TURE,draw.segment=FALSE,….)

其中,x为数据矩阵或数据框。full为图形形状,full=T为圆形,full=F为半圆。draw.segments为分支形状:draw.segments=T为圆形,draw.segments=F为半圆。缺省为:segment=F。

stars(X,full=T)



stars(X,full=F)



stars(X,full=T,draw.segments=T)



stars(X,full=F,draw.segments=T)



03
R软件中的绘图命令


在作图函数中,有两类作图函数。一类是高水平作图函数:可产生图形,有坐标轴以及图和坐标的说明文字等;一类是低水平作图函数:自身无法生成图形,只能在高水平作图函数产生的图形的基础上,增加新的图形。

1.高水平绘图函数

plot(),pairs(),qqnorm(),qqline(),hist(),contour()等。

(1)plot()函数可绘制数据的散点图、曲线图等。

A. plot(x,y),其中x和y是向量,生成x和y的散点图。

x1=c(171,175,159,155,152,158,154,164,168,166,159,164)x2=c(57,64,41,38,35,44,41,51,57,49,47,46)plot(x1,x2)


B.plot(x),其中x是一时间序列,生成时间序列图形。如果x是向量,则产生x关于下标的散点图;如果x是复向量,则绘出复数的实部与虚部的散点图。

C.plot(f),plot(f,y)其中f是因子,y是数值向量。第一种格式生成f的直方图,第二种格式生成y关于f水平的箱线图。

例:利用四种不同配方的材料A1、A2、A3、A4生产出来的元件,测得寿命如下表所示:


绘出四种不同配方材料寿命的箱线图。

y<-c(1600, 1610, 1650, 1680, 1700, 1700, 1780, 1500, 1640,      1400, 1700, 1750, 1640, 1550, 1600, 1620, 1640, 1600,      1740, 1800, 1510, 1520, 1530, 1570, 1640, 1600)f<-factor(c(rep(1,7),rep(2,5), rep(3,8), rep(4,6)))plot(f,y)



plot还可以作很多图,可自行查看帮助文档。

(2)显示多变量数据

pairs(x),当x是矩阵或数据框时,可绘出关于矩阵各列的散点图。

(3)显示图形

其他高水平的绘图函数:

A.qqnorm(),qqline(),绘制QQ散点图。

B.hist(),绘制直方图。

C.dotchart(x),构造数据x的点图。例如:R中自带数据VADeaths,是弗吉尼亚州在1940年的人口死亡率。


dotchart(VADeaths)


D.image(x,y,z),countour(x,y,z),persp(x,y,z)
其中,x、y是数值型向量,z的行数是x的维数,z的列数是y的维数。Image()绘制三维图形,contour()绘制三维图形的等值线,persp()绘制三维图形的表面曲线。
例:某山区测得一些地点的高度(单位:m),如下所示,试做出该山区的地貌图和等值线图。
x<-seq(0,2800, 400)y<-seq(0,2400,400)z<-scan()1: 1180 1320 1450 1420 1400 1300  700  9009: 1230 1390 1500 1500 1400  900 1100 106017: 1270 1500 1200 1100 1350 1450 1200 115025: 1370 1500 1200 1100 1550 1600 1550 138033: 1460 1500 1550 1600 1550 1600 1600 160041: 1450 1480 1500 1550 1510 1430 1300 120049: 1430 1450 1470 1320 1280 1200 1080  94057: Read 56 items> Z<-matrix(z, nrow=8)image(x, y, Z)

contour(x, y, Z, levels = seq(min(z), max(z), by = 80))

persp(x, y, Z)

我们可以看到,图有两个缺点:一是过于粗糙,其原因是由于数据量过少造成的,如果数据量稍大一些,图形质量将会有很大的改善;二是三维图的观察角度不理想,这是由于只用到函数中各种参数的缺省值状态,如果改变某些参数的值,图形的观察角度也会随之改变。例如:

persp(x, y, Z,theta=30,phi=45,expand=0.7)


2.高水平绘图中的命令:

在高水平绘图函数中,可以加一些命令,不断完善图的内容,或增加一些有用的说明。

(1)图中的逻辑命令

add=T,表示所绘图在原图上加图,缺省为add=F,即新的图替换原图。

axes=F,表示所绘制图形没有坐标轴,缺省值为axes=T。

(2)数据取对数

log=”x”表示x轴数据取对数,log=”y”表示y轴数据取对数,log=”xy”表示x轴与y轴数据同时取对数。

(3)type命令

type=”p”,散点图(缺省);type=”l”,实线图;type=”b”,所有点被实线连接;type=”o”实线通过所有的点;type=”h”,绘出点到x轴的竖线;type=”s”,绘制阶梯形曲线;type=”n”,不绘制任何点或曲线。

(4)其他图形参数

A.pch,指定绘制点时使用的符号:


B.cex指定符号的大小,cex是一个数值,表示绘图符号相对于默认大小的倍数。

C.lty指定线条类型:


D.lwd指定线条宽度,同cex。

E.col指定绘图颜色,可以写数值,也可以写”red”之类的全称。函数colors()可以返回左右可用颜色的名称,R中还有其他创建颜色的函数,如rainbow()、heat.colors()、gray()等。

(5)图中的字符串

xlab=””,引号内内容是x轴的名字;ylab=””,引号内容是y轴的名字;mean=””, 引号内内容是图标题,sub=””, 引号内内容是子图的说明。

3.低水平作图函数

有时候高水平作图不能完全达到目的,需要低水平函数予以补充。低水平函数所作的图形是在高水平作图函数做绘制图形的基础之上,增加新的图形。

低水平作图函数有:points()、lines()、text()、abline()、lengend()、title()、axis()等。

x=c(171,175,159,155,152,158,154,164,168,166,159,164)y=c(57,64,41,38,35,44,41,51,57,49,47,46)

(1)加点与线的函数

points(),作用是在已有图上加点,命令points(x,y),其功能相当于plot(x,y)。

lines(),作用是在已有图上加线,命令lines(x,y),其功能相当于plot(x,y,type=”l”)。

(2)在点处加标记

text(),作用是在图上加标记,命令格式为:text(x,y,labels,…)

其中,x和y是数据向量,labels可以是整数,也可以是字符串,在缺省状态下labels=1:length(x)。例如,需要绘制(x,y)的散点图,并将所有点用数字标记,命令为:plot(x,y);text(x,y)

(3)在图上加直线

函数abline()可以在图上加直线,使用方法有以下格式:

A.abline(a,b),表示画一条y=bx+a的直线。

B.abline(h=y),表示画出一条过y的水平直线。

C.abline(v=x),表示画出一条过x的垂直直线。

(4)在图上加标记、说明或其他内容

在图上加说明文字、标记或其他内容,用法是:

title(main=””,sub=””,…),主标题在图的顶部,子标题在图的底部。

在坐标轴上加标记、说明或其他内容,用法是:

axis(side,…),side表示边,1、2、3、4分别表示内容放在下、左、上、右。

在图上加图例,用法是:

lengend(location,title,…),location是指定图例位置,title是图例标题。例:

dose<-c(20,30,40,45,60)drugA<-c(16,20,27,40,60)drugB<-c(15,18,25,31,40)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")legend("topleft",inset=0.05,title="Drug Type",c("A","B"),lty=c(1,2),pch=c(15,17),col=c("red","blue"))    


—END—


欢迎关注学研录
细心 用心 恒心
声明:资料源于网络,仅供学习,禁止商用,如有侵权联系我们立即删除。

相关阅读

  • HDFS EC在B站的实践

  • 本期作者陈世云哔哩哔哩资深开发工程师1.背景随着B站业务的高速发展,业务产生的数据每天以PB级的速度持续增长,之前主要应对方法是分析数据的使用频率,把数据分为热冷俩类数据,
  • 周天宇:以“源网荷储”实现“投产即零碳”

  • 【环球网科技报道 记者 林迪】“从绿电的属性来看,目前它还不能经过长距离、大规模的传输,合盈数据践行‘投产即零碳’理念,在怀来地区建设大规模的新能源储备以及大规模的数据
  • 智观察|“数字中国”的算力底座

  • 编者按:近日,中共中央、国务院印发《数字中国建设整体布局规划》(以下简称《规划》)。其中明确提出,到2025年,基本形成横向打通、纵向贯通、协调有力的一体化推进格局,数字中国建设
  • 天量M2和通缩同时出现 真的太撕裂了

  • 作者:钟灏来源:米筐资本(ID:mikuangziben)已获得转载授权当下的中国经济,有点错综复杂。一方面有很多数据看起来很漂亮,另一方面又有些数据似乎不那么乐观。当然,对于普通投资者来
  • 【音频版】财联社3月14日早报(周二)

  • 交易提示一图尽览新股重要信息,多维度数据帮助用户判断是否打新。更多解读,请点击图片查看专题宏观新闻1、3月13日,十四届全国人大一次会议闭幕后,国务院总理李强出席记者会并回
  • 数据可视化建设的成本该花在哪?

  • 企业的数据信息化建设过程中,可视化的需求现在越来越火,因为可视化能更直观的表达数据的含义,让用户更简单清晰的理解数据的信息,体验更好,而且随着可视化技术的不断进步,图形不仅

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 一贷又一贷

  • 又还了一万块。过去两年,王朴石每攒够一万块,都会把钱存进民生银行。然后在民生银行的爱啪啪(APP)里,点房贷的“线上还款”,就能一点一点地提前还贷。大多数银行要提前还房贷,得线
  • 正式上线!人生发展咨询,优化你的人生发展

  • 开智新业务「人生发展咨询」项目正式上线公测啦!人生发展咨询项目是基于阳志平老师创设的「人生发展学」相关理论,由人生发展咨询师协助来访者,共同整理自己当前的人生发展状况
  • 张颂文,一名被电影耽误的培训师

  • 除了演好戏,张颂文一定是一名优秀的培训师。为什么这么说呢?主要有以下几个原因:他的实战与大学老师的经历、他对问题的洞察(知识萃取)及娓娓道来的表述风格,都足以胜任培训师的角