R语言 CHAR 02

数据可视化



思维导图

请添加图片描述
请添加图片描述

一、类别数据可视化

关注:绝对频数、频数百分比

1.条形图及其变种

垂直条形图、水平条形图
简单条形图、并列条形图、堆叠条形图

1.1简单条形图和帕累托图

简单条形图
  • layout:设置页面布局
  • barplot:绘制条形图
    xlab、ylab:x轴y轴图例
    horize:是否水平放置(true水平放置)
    density:填充密度
    angle:密度线角度设置
    col:颜色设置
    border:条边框颜色
    cex.x、cex.y:设置字体大小
    main:标题
> table1<-table(table$社区)
> table2<-table(table$性别)
> table3<-table(table$态度)
> layout(matrix(c(1,2,3,3),2,2,byrow=TRUE))
> par(mai=c(0.6,0.6,0.3,0.1),cex=0.7,cex.main=1,font.main=1)
> barplot(table2,
	xlab="人数",ylab="性别",
	horiz=TRUE, #水平放置
	density=30,angle=0,#填充密度和密度线角度设置
	col=c("grey50","grey80"),
	border="black",
	main="(a)水平条形图")
> barplot(table3,
	xlab="态度",ylab="人数",
	density=20,angle=90,
	col=c("red","blue"),border=c(2,4),
	main="(b)垂直条形图")
> barplot(table1,
	xlab="社区",ylab="人数",
	cex.names=1.2,cex.lab=1.2, #字体变大
	col=c("#FC8D62","#E78AC3","#66C2A5","#FFD92F"),
	main="(c)垂直条形图")

请添加图片描述

帕累托图

排序的条形图

  • sort:按序排列(decreasing=TRUE 降序排列)
  • barplot:先画条形图
  • text:增加频数标签(bar、table、labels希望对哪个增加频数标签、pos位置、从col颜色)
  • 后续见代码
par(mai=c(0.7,0.7,0.2,0.7),cex=0.7)
x<-sort(table(example2_1$社区),decreasing=TRUE)#生成一维表并将频数降序排列
palette<-RColorBrewer::brewer.pal(4,"Blues")#设置调色板
bar<-barplot(x,xlab="社区",ylab="频数",col=rainbow(4),ylim=c(0,1.2*max(x)))
#条形图
text(bar,x,labels=x,pos=3,col="black")#为条形图添加频数标签
y<-cumsum(x)/sum(x)#计算累计频数
par(new=T)#绘制一新图加在现有图上
plot(y,type="b",pch=15,axes=FALSE,xlab='',ylab='',main='')
#绘制累积频数折线
axis(side=4)#在第四个边增加坐标
mtext("累计频率",side=4,line=3,cex=0.8)#添加坐标轴标签
text(labels="累积分布曲线",x=3,y=0.92,cex=1)#添加注释文本

请添加图片描述

1.2复式条形图和脊形图

复式条形图

并列条形图、堆叠条形图

  • 画条形图:barplot(table、beside=TRUE/FALSE(并列/堆叠)、horiz=TRUE/FALSE(水平/垂直)、legend=rownames(tab1)、args.legend=list(x ,y ,ncol ,cex ,box.col )))
  • 添加频数标签:BarText(table,b =barplot, beside,horiz(同上), cex =1, top = TRUE )
tab1<-table(example2_1$性别,example2_1$社区)
tab2<-table(example2_1$性别,example2_1$态度)
tab3<-table(example2_1$社区,example2_1$态度)
library(DescTools)
par(mfrow=c(2,2),mai=c(0.55,0.6,0.6,0.1),cex=0.7,cex.main=1,font.main=1)
b1<-barplot(tab1,beside=TRUE,xlab="社区",ylab="人数",
            main ="(a)垂直并列",col=c("#66C2A5","#FC8D62"),
            legend=rownames(tab1),
            args.legend=list(x=12,y=19,ncol=2,cex=0.7,box.col ="grey80"))
BarText(tab1,b =b1, beside = TRUE , cex =1, top = TRUE )#添加频数标签
b2<- barplot (tab2, beside = TRUE , horiz =TRUE ,
              xlab ="人数", ylab="态度", 
              main="(b)水平并列", 
              col = c("#66C2A5","#FC8D62"), 
              legend = rownames(tab2),
              args.legend=list(x =9.2, y =7, ncol =2, cex =0.7,box.col ="grey80"))
BarText (tab2, b =b2, beside = TRUE , horiz = TRUE , cex =1, top = FALSE )
b3<-barplot (tab3,xlab ="态度", ylab ="人数", 
             main ="(c)垂直堆叠",
             col = c ("#FC8D62","#E78AC3","#66C2A5","#FFD92F"),
             legend=rownames (tab3), 
             args.legend =list(x =1.32, y =50, ncol =2, cex =0.7, box.col ="grey80"))
BarText (tab3, b=b3, cex =1)
b4<- barplot (tab3, horiz = TRUE , xlab ="人数", ylab ="态度", 
              main ="(d)水平堆叠", 
              col=c("#FC8D62","#E78AC3","#66C2A5","#FFD92F"),
              legend = rownames (tab3),
              args.legend =list(x =47, y =2.8, ncol =4, cex =0.7, box.col ="grey80"))
BarText (tab3, b =b4, horiz = TRUE , col ="black", cex =1)

请添加图片描述

脊形图
  • spineplot(table/y~x,data,col,xlb,ylab,main)
tab4<-table(table$社区,table$性别)
tab5<-table(table$态度,table$社区)
par(mfrow=c(1,2),mai=c(0.6,0.6,0.4,0.4),cex=0.7,cex.main=1,font.main=1)
palette<-rev(RColorBrewer::brewer.pal(4,"Reds"))#设置调色板
spineplot(tab4,data=example2_1,col=palette[1:2],xlab="社区",ylab="性别",main="(a)性别与社区")
spineplot(tab5,data=example2_1,col=palette,xlab="态度",ylab="社区",main="(b)社区与态度")

请添加图片描述

1.3马赛克图

  • mosaicplot(~y1+y1+y3…,data,col,off(中间间距),main,)
mosaicplot(~table$性别+table$社区+table$态度,
           data=example2_1,
           col=c("#E41A1c","#377EB8"),
           cex.axis=0.8,off=5,main="")

请添加图片描述

2.饼图及其变种

2.1饼图和扇形图

饼图与3D饼图
  • 设置名称向量:name<-names(tab)
  • 计算百分比:percent<-prop.table(tab)*100
  • 设置标签向量:abs<-paste(name," “,percent,”%",sep="")
  • 普通饼图:pie(table, labels, init.angle,radius,main)
  • 3D饼图:plotrix::pie3D(table, labels,explode(分离程度 建议0.1),labelcex,main)
par(mfrow=c(1,2),mai=c(0.1,0.4,0.1,0.4),cex=0.7)
tab<-table(example2_1$社区)	#生成频数表
name<-names(tab)			#设置名称向量
percent<-prop.table(tab)*100 #计算百分比
labs<-paste(name," ",percent,"%",sep="")#设置标签向量
pie(tab,labels=labs,init.angle = 90,radius=1,main="(a)普通饼图")

plotrix::pie3D(tab,labels=labs,explode=0.1,labelcex=0.7,main="(b) 3D饼图")
扇形图
  • fan.plot(table, labels, max.span=n*pi(建议n=0.9), shrink(几个扇形之间纵向相隔距离), radius, label.radius(标签与扇形的距离), ticks(外层突出分度值), col)
library(plotrix)
library(RColorBrewer)
tab<-table(example2_1$社区)
name<-names(tab)
percent<-prop.table(tab)*100
labs<-paste(name," ",percent,"%",sep="")
fan.plot(tab,labels=labs,
         max.span=0.9*pi,		#设置扇形最大跨度
         shrink=0.06,radius=1.2,#设置扇形错开的距离和半径
         label.radius=1.4,#设置标签与扇形的距离
         ticks=200,
         col=c("#FB8072","#FFFFB3","deepskyblue","pink"))#设置颜色向量

请添加图片描述

2.2环形图和饼环图

  • 环形图:ggDonut(table, aes(donuts=)(以什么作为区分),col ,xmin, xmax,(最大和最小半径)title)
  • 饼环图:ggPieDonut(data, aes(pies=,donuts=), title)
library(ggiraphExtra)
require(ggplot2)		#require和library一样
library(gridExtra)
p1<-ggDonut(example2_1,aes(donuts=社区),colour="white",xmin=2,xmax=4,title="(a)环形图")

p2<-ggPieDonut(data=example2_1,aes(pies=社区,donuts=态度),title="(b)饼环图")
grid.arrange(p1,p2,ncol=2)		#按两列组合两张图
#ncol=2 一窗口两列

请添加图片描述

二、数据分布可视化

1.直方图与核密度图

直方图
  • hist(table, label(添加频数标签),breaks(分组) col, xlab, ylab, ylim, main)
  • 地毯图:rug(table)
  • 扰动点:rug(jitter(table))
  • 核密度曲线:lines(density(table), col, lwd )
  • 正态分布曲线:curve(dnorm(x,mean(table),sd(table)),col, add=TRUE)
example2_2<-read.csv("example2_2.csv")
attach(example2_2)
par(mfrow=c(2,3),mai=c(0.4,0.5,0.4,0.1),cex=0.7,font.main=1)
hist(北京,labels=TRUE,col="#FFD92F",xlab="AQI",ylab="频数",ylim=c(0,90),main="(a)北京:添加频数标签")
hist(上海,breaks=20,col="skyblue",xlab="AQI",ylab="频数",main="(b)上海:数据分成20组")
hist(郑州,breaks=20,col="lightgreen",xlab="AQI",ylab="频数",main="(c)郑州:添加地毯图")
rug(郑州)#添加地毯图
hist(武汉,breaks=20,col="#FC8D62",xlab="AQI",ylab="频数",main="(d)武汉:添加扰动点")
rug(jitter(武汉))#添加扰动点
hist(西安,prob=TRUE,breaks=20,col="pink",xlab="AQI",ylab="密度",ylim=c(0,0.012),main="(e)西安:添加核密度曲线")
lines(density(西安),col="blue3",lwd=1)#添加核密度曲线
hist(沈阳,prob=TRUE,breaks=20,col="orange",xlab="AQI",ylab="密度",main="(f)沈阳:添加理论正态分布曲线")
curve(dnorm(x,mean(沈阳),sd(沈阳)),col="blue",add=TRUE)#添加正态分布曲线

请添加图片描述
b是指定分成20组绘制的直方图
c添加地毯图以观察实际数据在坐标轴上的分布
d计算数据扰动点,避免相同数据点在坐标轴上的重叠
e加的核密度曲线是以实际数据分布密度的估计,显示数据分布的形状
f添加理论正态分布曲线,与直方图比较可判断是否近似服从正态分布

核密度图
  • d2<-density(table,bw(带宽,越大越平滑),xlab, ylab, main)
  • 填充: polygon(d3,col=,border = )
d<-example2_2$北京
par(mfrow=c(1,3),mai=c(0.6,0.6,0.3,0.1),cex=0.7,cex.main=1,font.main=1)
d1<-density(d)
d2<-density(d,bw=3)
d3<-density(d,bw=10)
plot(d1,xlab="AQI",ylab="Density",main="(a)默认带宽")
plot(d2,col="red",xlab="AQI",ylab="Density",main="(b)bw=3")
polygon(d2,col="orange",border = "black")#填充橙色
plot(d3,col="red",xlab="AQI",ylab="Density",main="(c)bw=10")
polygon(d3,col="orange",border = "black")#填充

请添加图片描述
将六个核密度曲线放在一起,可以比较分布程度及偏斜程度

  • PlotMultiDens(data, y~x, col, xlab, ylab,xlim, lwd, main,fill(填充颜色))
library(reshape2)
library(DescTools)
df<-melt(example2_2,id.vars=c("日期"),variable.name="城市",value.name="AQI")#将数据融合成长格式
par(mfrow=c(2,1),mai=c(0.6,0.6,0.3,0.1),cex=0.7,font.main=1)
PlotMultiDens(data=df,AQI~城市,col=Pal(),xlab="AQI",ylab="Density",xlim=c(-1,400),lwd=1,main="(a)核密度曲线")
PlotMultiDens(data=df,AQI~城市,xlab="AQI",ylab="Density",xlim=c(-1,400),fill=SetAlpha(rainbow(6),0.2),main="(b)填充颜色")

请添加图片描述

2.箱线图和小提琴图

箱线图

展示分布是否对称,是否存在离群点
1、找中位数(median)和两个四分位数(quartiles),画箱子

2、计算内围栏,并画出须线。
内围栏(inter fence)是与四分位数的距离等于1.5倍四分位差的两个点,
其中𝑄(25%)−1.5×𝐼𝑄𝑅称为下内围栏,
𝑄(75%)+1.5×𝐼𝑄𝑅称为上内围栏。
上下内围栏一般不在箱线图中显示,只是作为确定离群点的界限。

3、计算相邻值,找出上下内围栏之间的最大值和最小值,即非离群点的最大值和最小值,称为相邻值(adjacent value),
其中大于𝑄(25%)−1.5×𝐼𝑄𝑅的最小值称为下相邻值,
小于𝑄(75%)+1.5×𝐼𝑄R 的最大值称为上相邻值。
用直线将上下相邻值分别与箱子连接,称为须线(whiskers)。

4、找离群点,并在图中单独标出。
离群点(outlier)是大于上内围栏或小于下内围栏的数值,也称外部点(outside value),在图中用“o”单独标出

  • boxplot(table, xlab, ylab ,col)
  • points(apply(table), 1对应为1表示行,2表示列, 操作),col, cex, pch(标记符号))
par(mai=c(0.6,0.6,0.1,0.1),cex=0.7)
palette<-RColorBrewer::brewer.pal(6,"Set2")#设置离散型调色板
boxplot(example2_2[,2:7],xlab="城市",col=palette,ylab="AQI")
points((apply(example2_2[,2:7],2,mean)),col="blue3",cex=1.5,pch="+")#用+号画出均值点

请添加图片描述

小提琴图

比箱线图多显示核密度估计曲线

  • vioplot(table, col, xlab, ylab)
library(vioplot)
par(mfrow=c(1,1),mai=c(0.6,0.6,0.1,0.1),cex=0.7)
palette<-RColorBrewer::brewer.pal(6,"Set2")#设置离散型调色板
vioplot(example2_2[2:7],col=palette,xlab="城市",ylab="AQI")
points((apply(example2_2[,2:7],2,mean)),col="blue3",cex=1.5,pch="+")#画出均值点

请添加图片描述

3.茎叶图和点图

茎叶图(有问题)

数据量小时,能保留原始数据信息

  • 由“茎”和“叶”两部分构成
    以该组数据的高位数值作树茎,低位数字作树叶
    树叶上只保留最后一位数字
  • 茎叶图类似于横置的直方图,但又有区别
    直方图可观察一组数据的分布状况,但没有给出具体的数值
    茎叶图既能给出数据的分布状况,又能给出每一个原始数值,保留了原始数据的信息
    直方图适用于大批量数据,茎叶图适用于小批量数据
  • stem.leaf(table,unit(数据的单位),m(行数))
library(aplpack)
stem.leaf(example2_2$北京,unit=1,m=1)     # 数据的单位为1,茎叶图的行数为1

1 | 2: represents 12
 leaf unit: 1
            n: 365
    6     2 | 378899
   40     3 | 0000002233334445555566688899999999
   82     4 | 000001111223333344555666777777788888888999
  120     5 | 00011122444445555556666667777888899999
  160     6 | 0000000011111112344444445555557777788899
  (42)    7 | 000001222233333334444444455555567888888999
  163     8 | 00001233555556677789
  143     9 | 00011223444566778
  126    10 | 0000011112344444455789999
  101    11 | 0222333446777777889999
   79    12 | 00033444667777899
   62    13 | 0001224457788999
   46    14 | 12233445679
   35    15 | 001468
   29    16 | 22336779
   21    17 | 013555889
   12    18 | 036789
    6    19 | 35
HI: 213 233 233 267
  • stem.leaf.backback(table1, table2, back.to.back)
#背靠背茎叶图 可以比较上半年和下半年AQI分布差异
> library(aplpack)
> stem.leaf.backback(example2_2$北京[1:181],example2_2$北京[182:365],back.to.back=TRUE)     # 数据的单位为1,茎叶图的行数为1
__________________________________________________________________
  1 | 2: represents 12, leaf unit: 1 
          example2_2$北京[1:181]      example2_2$北京[182:365]    
__________________________________________________________________
                              |  2 |378899                    6   
   16         9999886655533220|  3 |000003344455689999       24   
   38   9988887776554322111000|  4 |00133334566777788889     44   
   57      9888777666655444221|  5 |0001144555566789999      63   
   77     99855544431111000000|  6 |00111244445557777788     83   
  (20)    99888886554444333210|  7 |0000222333344445555789  (22)  
   84                875555100|  8 |00233566779              79   
   75                  8774410|  9 |0012234566               68   
   68              99874441110| 10 |00001234445599           58   
   57                877764322| 11 |0233477789999            44   
   48               9766444300| 12 |0377789                  31   
   38             999887544210| 13 |0027                     24   
   26                    54321| 14 |234679                   20   
   21                      864| 15 |001                      14   
   18                     9632| 16 |2377                     11   
   14                    95510| 17 |3588                      7   
    9                     8760| 18 |39                        3   
    5                       53| 19 |                              
                              | 20 |                              
__________________________________________________________________
HI: 213 233 267                     HI: 233                       
n:                         181      184                       
__________________________________________________________________
点图

各数据用点绘制在图中,检测数据离群点的有效工具,当数据量较少时,可以替代直方图和箱线图来观察数据的分布

  • dotchart(table, groups(以什么标志),gcolor, lcolor, pch, col, pt.cex, xlab, ylab)
df<-melt(example2_2,id.vars=c("日期"),variable.name="城市",value.name="AQI")#将数据融合成长格式
par(mai=c(0.6,0.6,0.2,0.2),cex=0.7,font=2)
palette<-rev(RColorBrewer::brewer.pal(6,"Set2"))#设置调色板
dotchart(df$AQI,groups=df$城市,gcolor=palette,lcolor="grey95",pch="o",col=palette[df$城市],pt.cex=0.3,xlab="AQI",ylab="城市")

三、变量间关系可视化

1.散点图和散点图矩阵

散点图(有问题)

观察两个变量间是否有关系,观察关系的形态以及关系强度

  • plot(table1, table2,pch(点形状), col, xlab, ylab)
  • abline(lm(y~x),lwd, col)
    lm:对数据进行线性回归
    abline:加入拟合函数
plot(example2_3$总股本,example2_3$每股收益,pch=19,col="green4",xlab="总股本",ylab="每股收益")
abline(lm(example2_3$每股收益~example2_3$总股本),lwd=2,col="red")#添加回归线

请添加图片描述
如果想在散点图中反映两个变量的分布信息,可在散点图中添加每个变量的边际图

library(ggpubr)
ggscatterhist(example2_3,x="总股本",y="每股收益",
              title="边际图为直方图的散点图",
              size=1,color="forestgreen",#设置点的大小和颜色
              rug=TRUE,#添加地毯图
              margin.plot="histogram",#设置边际图的类型为直方图
              margin.params=list(fill="deepskyblue",color="black"),#设置边际图的填充颜色和线的颜色
              ggtheme=theme_minimal())#设置图形主题

请添加图片描述

散点图矩阵

将多幅散点图绘制成矩阵的形式
散点图矩阵中,对角线上下两部分是对称的图形,也可以将对角线的下方(或上方)绘制出一种形式的散点图(或相关系数),对角线上方(或下方)绘制出另一种形式的散点图(或相关系数)

  • plot(table,cex, gap)
plot(example2_3,cex=0.8,gap=0.5)
#设置点的大小和各散点图之间的间隔

请添加图片描述
主对角线上绘制了每个变量的核密度图,用于分析各变量的分布特征,为回归建模提供参考;
散点图中分别绘制了拟合的直线曲线以及置信区间,椭圆越扁平,相关性越强

  • scatterplotMatrix(~y1+y2+y3, table, diagonal, ellipse, col, gap)
    diagonal:对角线绘制各本例的核密度图
    ellipse:绘制椭圆
library(car)
scatterplotMatrix(~总股本+每股收益+每股净资产+每股现金流量,example2_3,
                  diagonal=TRUE,#对角线绘制各本例的核密度图
                  ellipse=TRUE,#绘制椭圆
                  col="steelblue3",#设置颜色
                  gap=0.5)

请添加图片描述
带影线的矩形,左下到右上斜线代表正相关,使用蓝色,相关系数越大相关性越强
左上到右下斜线负相关,红色

  • corrgram(table,main,order,lower.panel, upper.panel)
    order:按相关系数排列变量
    lower.panel=panel.shade:对角线下方绘制阴影线
    upper.panel=panel.pie):对角线上方绘制饼图
library(corrgram)
corrgram(example2_3,main="在对角线下方画出阴影线,上方画出饼图",
         order=TRUE,#按相关系数排列变量
         lower.panel=panel.shade,#对角线下方绘制阴影线
         upper.panel=panel.pie)#对角线上方绘制饼图

请添加图片描述

2.3D散点图和气泡图

表示三个变量之间的关系

3D散点
  • cloud(y~x, data, par.settings=list(par.xlab.text, par.ylab.text, par.zlab.taxt),main)
library(lattice)
#绘制a图
p1<-cloud(example2_3$总股本.亿股.~example2_3$每股收益.元.+example2_3$每股净资产.元.,data=example2_3,
             par.settings=list(par.xlab.text=list(cex=0.6),#x轴标签字体大小
                               par.ylab.text=list(cex=0.6),
                               par.zlab.taxt=list(cex=0.6)),
             main="(a)总股本~每股收益+每股净资产")
#绘制b图
p2<-cloud(example2_3$每股收益.元.~example2_3$每股净资产.元.+example2_3$每股现金流量.元.,data=example2_3,
              par.settings=list(par.xlab.text=list(cex=0.6),
                                par.ylab.text=list(cex=0.6),
                                par.zlab.taxt=list(cex=0.6)),
              main="(b)每股收益~每股净资产+每股现金流量")
#组合ab两图
plot(p1,split=c(1,1,2,1))
plot(p2,split=c(2,1,2,1),newpage=F)

请添加图片描述

气泡图

用变量x和y画出散点图,第3个变量数值的大小用圆的大小表示

  • symbols(x,y,z,inches,fg,bg)
    inches:气泡半径
    fg:圆的颜色
    bg:圆的填充颜色
symbols(example2_3$每股收益.元.,example2_3$每股净资产.元.,example2_3$总股本.亿股.,
            inches=0.15,#设置气泡半径
            fg="black",#圆的颜色
            bg="pink")#圆的填充颜色

mtext("气泡大小=总股本",line=-2,cex=0.8,adj=0.1)#添加注释文本

请添加图片描述

四、样本相似性可视化

比较样本是否有相似性

1.轮廓图

x轴表示各样本,y轴表示每个样本的多个变量的数值,将同一样本在不同变量上的观测值用折线连接起来。
观察折线形状,排列方式,可比较样本在多变量上取值的相似性及差异

  • 数据框转换成矩阵:
    mat<-as.matrix(example2_4[,2:9])
    rownames(mat)=example2_4[,1]
  • PlotLinesA(t(mat), xlab, ylab ,args.legend, col, pch, pch.col, pch.bg, pch.cex)
  • legend(x=“topright”, legend, lty, col, box.col, inset ,ncol ,cex)
library(DescTools)
mat<-as.matrix(example2_4[,2:9])
rownames(mat)=example2_4[,1]#数据框转换成矩阵
par(mai=c(0.6,0.6,0.1,0.1),cex=0.6)
PlotLinesA(t(mat),xlab="消费项目",ylab="支出金额",args.legend=NA,
           col=rainbow(13),pch=21,pch.col=1,pch.bg="white",pch.cex=1)
legend(x="topright",legend=example2_4[,1],lty=1,
       col=rainbow(13),box.col="grey80",inset=0.01,ncol=1,cex=0.8)#添加图例

请添加图片描述

2.雷达图

不同坐标的刻度可能不可比,多条线之间比较才有意义

  • ggRadar(data, rescale, aes(group), alpha=0, size)
    rescale:是否缩放尺度
  • theme(axis.text, legend.position, legend.text)
    axis.text=element_text(size=7):设置坐标轴字体大小
    legend.position:设置图例位置
    legend.text=element_text(size=“6”):设置图例字体大小
  • theme_bw()#去掉底色
library(ggiraphExtra)
library(ggplot2)
ggRadar(data=example2_4,rescale=FALSE,#尺度不缩放,使用原始数据
        aes(group=地区),alpha=0,size=1)+#按地区分组
  theme(axis.text=element_text(size=7),#设置坐标轴字体大小
        legend.position="right",#设置图例位置
        legend.text=element_text(size="6"))+#设置图例字体大小
  theme_bw()#去掉底色

请添加图片描述

3.星图和太阳图

从一个点出发,每个变量用一条射线表示,P个变量形成P条射线(P个坐标轴),每个样本在P个变量上的取值连接成线,即围成一个区域,多个样本围成多个区域
利用雷达图也可以研究多个样本之间的相似程度

需要先对变量做标准化处理

星图
  • 数据框转化成矩阵:
    mat<-as.matrix(example2_4[,2:9])
    rownames(mat)=example2_4[,1]
  • stars(mat, nrow, full, scale, len, draw.segments, key.loc, mar,cex)
    nrow:拍列行数
    full:绘制出满圆当作图例
    scale:将数据缩放到[0,1]范围
    len:设置半径或线段长度的比例
    draw.segments:绘制线段图
    key.loc :设置线段图位置
    mar:设置图形边界
    cex:设置标签字体大小
mat<-as.matrix(example2_4[,2:9])
rownames(mat)=example2_4[,1]#数据框转化成矩阵
stars(mat,nrow=4,#排列成4行
      full=TRUE,#绘制出满圆当作图例
      scale=TRUE,#将数据缩放到[0,1]范围
      len=1,#设置半径或线段长度的比例
      draw.segments=TRUE,#绘制线段图,
      key.loc = c(7,2,3),#并设置位置
      mar=c(0.5,0.1,0.1,0.1),#设置图形边界
      cex=1.1)#设置标签字体大小
太阳图(有问题)

各指标值越大围成区域越大

library(symbols)
symbol(example2_4,type="sun",colin=1,labels=1,labelsize=1,scheme=1)

请添加图片描述

五、时间序列可视化

在不同时间点上记录的一组数据

1.折线图(有问题)

映射函数,函数的最常见参数有两个
x:x向量,将数据映射到本图层的x轴
y:y向量,将数据映射到本图层的y轴
…:其他向量,将数据映射到本图层的其他几何要素上
library(ggplot2)
aes(x, y, …)

geom_line(aes(color=more))
geom_line(linetype=3)
geom_line()+geom_point()

facet_wrap是基于一个因子进行设置,facets表示形式为:~变量( ~单元格)
nrow,ncol 分面索要设置成的行和列,参数为数值,表示几行或者几列

library(reshape2)
library(ggplot2)
date<-as.Date(example2_2$日期)#将日期转化成日期变量date
d<-data.frame(日期=date,example2_2[,-1])#date合并到数据框d中
df<-melt(d,id.vars="日期",variable.name="城市",value.name = "AQI")#融合数据为长格式
mytheme<-theme(legend.position = "none",
               axis.title = element_text(size=10),
               axis.text=element_text(size=7))
ggplot(df,aes(x=日期,y=AQI,color=城市))+
  geom_line()+
  facet_wrap(vars(城市),ncol=2)  #以城市分为两列
  +mytheme

请添加图片描述

2.面积图

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值