继续练习,用dotchart语句绘制点图。
步骤1.将原图重新输入为excel表,原图是20多个城市2016年12月的供求比(sdratio),库存(stock)的比较。另外还有同比等一些数据,我先简化掉了。
install.packages("openxlsx")
library(openxlsx)
readFilePath<-"F:/citystock.xlsx"
mydata<-read.xlsx(readFilePath,"Sheet1")
然后就可以绘图了,还满简单的。
dotchart(mydata$stock,labels=mydata$city,cex=0.7)
仔细看一下原图表可以发现,虽然城市很多,但供求比都在0.5-1之间,如果我们想要排序绘图,除了先在excel或者矩阵里排序,也可以直接利用dotchart的分组功能。
dotchart(mydata$stock,labels=mydata$city,groups=mydata$sdratio,col=rainbow(mydata$sdratio*10),pch=19,cex=0.7)
各个城市就自动按照供求比的数值分类了。
但这里遇到了一个坑,按照供求比*10得出整数,赋予彩虹色值,但颜色与供求比的分组并不统一,不知道是怎么回事?
只好比较笨的各个赋值
mydata$color[mydata$sdratio==1]<-"red"
......
mydata$color[mydata$sdratio==0.5]<-"hotpink"
dotchart(mydata$stock,labels=mydata$city,groups=mydata$sdratio,col=mydata$color,pch=19,cex=0.7)
结果就很好了。
在某些案例里,并不是按照数值分类,而是按照产品A,产品B,产品C有不同的列,这样可以运用melt函数,将列打散变为:
城市1 产品A
城市1 产品B
城市1 产品C
....
install.packages("reshape");library(reshape) #需要安装reshape包
data2<-melt(mydata)
基本上dotchart语句还是比较简单的,它和散点图(plot)的区别是,散点图是很明确的(x,y)来定位,进而可做线性回归等分析。而dotchart可以只有一个维度,而利用另一个维度进行分组。
之前R语言绘图的相关展现方法