数据可视化
文章目录
思维导图
一、类别数据可视化
关注:绝对频数、频数百分比
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