- install.packages("vcd")
- library(vcd)
- #6.1 条形图-------------
- #6.1.1 简单条形图----------
- (counts <- table(Arthritis$Improved))
- barplot(counts,main="Simple Bar Plot",xlab = "Improved",ylab = "Frequency")
- barplot(counts,main = "Horizontal Bar Plot",xlab = "Frequency",ylab = "Improved",
- horiz = T)
- #6.1.2 堆积和分组条形图-------
- (counts <- table(Arthritis$Improved,Arthritis$Treatment))
- barplot(counts,main = "Stacked Bar Plot",xlab = "Treatment",ylab = "Frequency",
- col = c("red","yellow","green"),legend = rownames(counts))
- barplot(counts,main = "Grouped Bar Plot",xlab = "Treatment",ylab = "Frequency",
- col = c("red","yellow","green"),legend = rownames(counts),beside = T)
- #6.1.3 均值条形图-----------
- states <- data.frame(state.region,state.x77)
- (means <- aggregate(states$Illiteracy,by = list(states$state.region),mean))
- (means <- means[order(means$x),])
- barplot(means$x,names.arg = means$Group.1)
- title("Mean Illiteracy Rate")
- #6.1.4 条形图微调----------
- library(vcd)
- par(mar = c(5,8,4,2))
- par(las = 2)
- (counts <- table(Arthritis$Improved))
- barplot(counts,main = "Treament Outcome",horiz = T,cex.names = 0.8,
- names.arg = c("No Improvement","Some Improvement","Marked Improvement"))
- #6.1.5 棘状图(堆叠条形图,但是高度为1)------------
- library(vcd)
- attach(Arthritis)
- counts <- table(Treatment,Improved)
- spine(counts,main = "Spinogram Example")
- detach(Arthritis)
- #6.2 饼图----------
- par(mfrow = c(2,2))
- par(mar = c(5.1,4.1,4.1,2.1))
- slices <- c(10,12,4,16,8)
- lbls <- c("US","UK","Australia","Germany","France")
- pie(slices,labels = lbls,main = "Simple Pie Chart")
- #
- pct <- round(slices/sum(slices)*100)
- (lbls2 <- paste(lbls," ",pct,"%",sep = ""))
- pie(slices,labels = lbls2,col = rainbow(length(slices)),
- main = "Pie Chart With Percentages")
- #使用plotrix包做3D饼图
- install.packages("plotrix")
- library(plotrix)
- pie3D(slices,labels = lbls,explode = 0.1,main = "3D Pie Chart")
- #使用table做pie图
- mytable <- table(state.region)
- lbls3 <- paste(names(mytable),"\n",mytable,sep="")
- pie(mytable,labels = lbls3,main = "Pie Chart from a Table\n (with sample sizes)")
- #扇形图
- fan.plot(slices,labels = lbls,main = "Fan Plot")
- #6.3 直方图---------
- par(mfrow = c(2,2))
- hist(mtcars$mpg)
- #breaks参数,将横轴分成多少分
- hist(mtcars$mpg,breaks = 12,col = "red",xlab = "Miles Per Gallon",
- main = "Colored histogram with 12 bins")
- #注意下面的参数freq,freq设置为FALSE之后,y轴表示的是百分比,不是频数
- hist(mtcars$mpg,freq = F,breaks = 12,col = "red",xlab = "Miles Per Gallon",
- main = "Histogram,rug polt,density curve")
- rug(jitter(mtcars$mpg))
- lines(density(mtcars$mpg),col = "blue",lty = 2)
- #将图形付给参数,可以得到图形的细节,h <- hist(....)
- x <- mtcars$mpg
- h <- hist(x,breaks = 12,col = "red",xlab = "Miles Par Gallon",
- main = "Histogram with normal curve and box")
- (xfit <- seq(min(x),max(x),length = 40))
- yfit <-dnorm(xfit,mean = mean(x),sd = sd(x))
- yfit <- yfit*diff(h$mids[1:2])*length(x)
- lines(xfit,yfit,col = "blue",lty = 2)
- box()
- #6.4 核密度图--------------
- par(mfrow = c(2,1))
- d <- density(mtcars$mpg)
- plot(d)
- plot(d,main = "Kernal Density of Miles Per Gallon")
- polygon(d,col = "red",border = "blue")
- rug(mtcars$mpg,col = "brown")
- #使用sm包在一个图中做多组密度图
- par(mfrow = c(1,1))
- par(lwd=2)
- install.packages("sm")
- library(sm)
- attach(mtcars)
- (cyl.f <- factor(cyl,levels = c(4,6,8),labels = c("4 cylinder","6 cylinder","8 cylinder")))
- sm.density.compare(mpg,cyl,xlab = "Miles Per Gallon")
- title(main = "MPG Distribution by Car Cylinders")
- colfill <- c(2:length(levels(cyl.f)))
- legend(locator(1),levels(cyl.f),fill = colfill)
- detach(mtcars)
- #6.5 箱线图---------
- boxplot(mtcars$mpg,main = "Box Plot",ylab = "Miles per Gallon")
- #输出箱图的信息
- boxplot.stats(mtcars$mpg)
- #6.5.1 使用箱图进行比较--------
- boxplot(mpg~cyl,data = mtcars,main = "Car Mileage Data",xlab = "Number of Cylinders",
- ylab = "Miles Per Gallon")
- #varwidth=T使得箱图的宽度和他们的容量成正比
- boxplot(mpg~cyl,data = mtcars,main = "Car Mileage Data",xlab = "Number of Cylinders",
- ylab = "Miles Per Gallon",notch = TRUE,varwidth = T,col = "red")
- #交叉因子箱图
- mtcars$cyl.f <- factor(mtcars$cyl,levels = c(4,6,8),labels = c("4","6","8"))
- mtcars$am.f <- factor(mtcars$am,levels = c(0,1),labels = c("auto","standard"))
- boxplot(mpg~cyl.f*am.f,data = mtcars,varwidth = T,col = c("gold","darkgreen"),
- main = "MPG Distribution by Auto Type",xlab = "Auto Type")
- #6.5.2 小提琴图----------
- #这里使用到的包是vioplot
- install.packages("vioplot")
- library(vioplot)
- x1 <- mtcars$mpg[mtcars$cyl == 4]
- x2 <- mtcars$mpg[mtcars$cyl == 6]
- x3 <- mtcars$mpg[mtcars$cyl == 8]
- vioplot(x1,x2,x3,names = c("4 cyl","6 cyl","8 cyl"),col = "gold")
- title("Violin Plots of Miles Per Gallon")
- #6.6 点图----------
- #cex参数的作用是设置问文本的尺寸
- dotchart(mtcars$mpg,labels = row.names(mtcars),cex = .7,
- main = "Gas Mileage for Car Models",xlab = "Miles Per Gallon")
- #分组、排序、着色后的点图
- x <- mtcars[order(mtcars$mpg),]
- x$cyl <- factor(x$cyl)
- x$color[x$cyl == 4] <- "red"
- x$color[x$cyl == 6] <- "blue"
- x$color[x$cyl == 8] <- "darkgreen"
- dotchart(x$mpg,labels = row.names(x),cex = .7,groups = x$cyl,
- gcolor = "black",#gcolor 参数表示groupcolor
- color = x$color,pch = 19,#pch参数设置点的类型
- main = "Gas Mileage for Car Models\ngrouped by cylinder",
- xlab = "Miles Per Gallon")
- #11.1 散点图--------
- attach(mtcars)
- plot(wt,mpg,main = "Basic Scatter plot of MPG vs. Weight",xlab = "Car Weight (lbs/1000)",
- ylab = "Miles Per Gallon",pch = 10)
- abline(lm(mpg~wt),col = "red",lwd = 2,lty = 1)
- lines(lowess(wt,mpg),col = "blue",lwd = 2,lty = 2)
- #使用car包做更加复杂的散点图,这个图比较难看懂,没什么用
- install.packages("car")
- library(car)
- scatterplot(mpg~wt|cyl,data = mtcars,
- lwd = 2,
- main = "Scatter Plot of MPG vs. Weight # Cylinders",
- xlab = "Weight of Car (lbs/1000)",
- ylab = "Miles Per Gallon",
- legend.plot = T,
- id.method = "identify",
- labels = row.names(mtcars),
- boxplots = "xy")
- #11.1.1 散点图矩阵-------
- #upper.panel = NULL 设置矩阵只显示下矩阵
- pairs(~mpg+disp+drat+wt,data = mtcars,main = "Basic Scatter Plot Matrix",upper.panel = NULL)
- #car包中的scatterplotMatrix() 函数也可以生成散点图矩阵,并有以下可选操作:
- #?1以某个因子为条件绘制散点图矩阵;
- #?2包含线性和平滑拟合曲线;
- #?3在主对角线放置箱线图、密度图或者直方图;
- #?4在各单元格的边界添加轴须图。
- library(car)
- scatterplotMatrix(~mpg+disp+drat+wt,data = mtcars,spread = F,lty.smoooth = 2,
- main = "Scatter Polt Matrix via car Package")
- scatterplotMatrix(~mpg+disp+drat+wt|cyl,data = mtcars,spread = F,
- diagonal = "histogram",#diagonal设置对角线类型
- main = "Scatter Polt Matrix via car Package")
- #gclus包中的cpairs() 函数提供了一个有趣的散点图矩阵变种。
- #它含有可以重排矩阵中变量位置的选项,可以让相关性更高的变量更靠近主对角线。
- #该函数还能对各单元格进行颜色编码来展示变量间的相关性大小
- install.packages("gclus")
- library(gclus)
- mydata <- mtcars[c(1,3,5,6)]
- mydata.corr <- abs(cor(mydata))
- mycolors <- dmat.color(mydata.corr)
- myorder <- order.single(mydata.corr)
- cpairs(mydata,myorder,panel.colors = mycolors,gap = .5,
- main = "Variables Ordered and Colorsed by Correlation")
- #11.1.2 高密度散点图(热力图)----------
- set.seed(1234)
- n <- 10000
- c1 <- matrix(rnorm(n,0,.5),ncol = 2)
- c2 <- matrix(rnorm(n,3,2),ncol = 2)
- mydata <- rbind(c1,c2)
- mydata <- as.data.frame(mydata)
- names(mydata) <- c("x","y")
- with(mydata,
- plot(x,y,pch = 19,main = "Scatter Plot with 10,000 Obervations"))
- with(mydata,
- smoothScatter(x,y,main = "Scatterplot Colored by Smoothed Densities"))
- #hexbin包中的hexbin() 函数将二元变量的封箱放到六边形单元格中(图形比名称更直观)。示例如下
- install.packages("hexbin")
- library(hexbin)
- with(mydata,{
- bin <- hexbin(x,y,xbins = 50)
- plot(bin,main = "Hexagonal Binning with 10,000 Obervations")
- })
- #IDPmisc包中的iplot() 函数也可通过颜色来展示点的密度(在某特定点上数据点的数目)
- install.packages("IDPmisc")
- library(IDPmisc)
- with(mydata,
- iplot(x,y,main = "Image Scatter Plot with Color Indicating Density"))
- #11.1.3 三维散点图-----
- #使用scatterplot3d包
- install.packages("scatterplot3d")
- library(scatterplot3d)
- attach(mtcars)
- scatterplot3d(wt,disp,mpg,main = "Basic 3D Scatter plot")
- #在3d图中增加z轴线
- scatterplot3d(wt,disp,mpg,pch = 16,highlight.3d = T,type = "h",
- main = "Basic 3D Scatter plot")
- #在3d图中增加一个回归面
- s3d <- scatterplot3d(wt,disp,mpg,pch = 16,highlight.3d = T,type = "h",
- main = "Basic 3D Scatter plot")
- fit <- lm(mpg~wt+disp)
- s3d$plane3d(fit)
- #交互式3维散点图
- #使用rgl包,交互性的,可以用鼠标
- install.packages("rgl")
- library(rgl)
- plot3d(wt,disp,mpg,col = "red",size = 5)
- #以下使用Rcmdr包,旋转
- install.packages("Rcmdr")
- library(Rcmdr)
- scatter3d(wt,disp,mpg)
- #11.1.4 气泡图------
- r <- sqrt(disp/pi)
- symbols(mtcars$wt,mtcars$mpg,circles = r,
- inches = .3,#inches参数控制圆圈基准大小,默认1英寸
- fg = "white",
- bg = "lightblue",
- main = "Bubble Plot with point size proportional to displacement",
- ylab = "Miles Per Gallon",
- xlab = "Weight of Car (lbs/1000)")
- text(mtcars$wt,mtcars$mpg,rownames(mtcars),cex = .6)
- detach(mtcars)
- #11.2 折线图---------
- oper <- par(no.readonly = T)
- par(mfrow = c(1,2))
- t1 <- subset(Orange,Tree == 1)
- plot(t1$age,t1$circumference,xlab = "Age (days)",
- ylab = "Circumference (mm)",main = "Orange Tree 1 Growth")
- plot(t1$age,t1$circumference,xlab = "Age (days)",
- ylab = "Circumference (mm)",main = "Orange Tree 1 Growth",type = "b")
- par(oper)
- #在一幅图中画多个折线图
- Orange$Tree <- as.numeric(Orange$Tree)
- ntrees <- max(Orange$Tree)
- xrange <- range(Orange$age)
- yrange <- range(Orange$circumference)
- plot(xrange,yrange,type = "n",xlab = "Age (days)",ylab = "Circumference (mm)")
- colors <- rainbow(ntrees)
- linetype <- 1:ntrees
- plotchar <- 18:(18+ntrees)
- for (i in 1:ntrees) {
- tree <- subset(Orange,Tree == i)
- lines(tree$age,tree$circumference,type = "b",
- lwd = 2,lty = linetype[i],col = colors[i],pch = plotchar[i])
- }
- title("Tree Growth","example of line polt")
- legend(xrange[1],yrange[2],1:ntrees,cex=.8,col = colors,
- pch = plotchar,lty = linetype,title = "Tree")
- #11.3 相关图(不常用)---------
- #使用到corrgram包
- options(digits = 2)
- install.packages("corrgram")
- library(corrgram)
- corrgram(mtcars,order = T,lower.panel = panel.shade,upper.panel = panel.pie,
- text.panel = panel.txt,main = "Correlogram of mtcars intercorrelations")
- #11.4 马赛克图--------
- ftable(Titanic)
- library(vcd)
- mosaic(Titanic,shade = T,legend = T)
- mosaic(~Class+Sex+Age+Survived,Titanic,shade = T,legend = T)
- #16.2 lattic包---------
- library(lattice)
- histogram(~height|voice.part,data = singer,
- main = "Distribution of Heights by Voice Pitch",
- xlab = "Height (inches)")
- contourplot(volcano)
- levelplot(volcano)
- cloud(volcano)
- wireframe(volcano)
- bwplot(mtcars$mpg)
- parallelplot(mtcars[1:3])
- stripplot(mtcars$mpg~factor(mtcars$cyl))
- splom(mtcars[c(1,3,4,5)])
- #16.2.1 条件变量---------
- (displacement <- equal.count(mtcars$disp,number = 3,overlap = 0))#overlap设置重叠部分
- xyplot(mtcars$mpg~mtcars$wt|displacement,
- main = "Miles per Gallon vs. Weight by Engine Displacement",
- xlab = "Weight",ylab = "Mile per Gallon",
- layout = c(3,1),aspect = 1.5)
- #16.2.2 面板函数-----------
- mypanel <-function(x,y){
- panel.xyplot(x,y,pch=19)
- panel.rug(x,y)
- panel.grid(h=-1,v=-1)
- panel.lmline(x,y,col = "red",lwd = 1,lty = 2)
- }
- xyplot(mtcars$mpg~mtcars$wt|displacement,
- main = "Miles per Gallon vs. Weight by Engine Displacement",
- scales = list(cex=.8,col = "red"),
- xlab = "Weight",ylab = "Mile per Gallon",
- layout = c(3,1),aspect = 1.5,panel = mypanel,index.cond = list(c(2,1,3)))
- #16.2.3 分组变量---------
- mtcars$transmission <- factor(mtcars$am,levels = c(0,1),labels = c("Automatic","Manual"))
- colors <- c("red","blue")
- lines <- c(1,2)
- points <- c(16,17)
- key.trans <- list(title = "Trasmission",space = "bottom",columns = 2,
- text = list(levels(mtcars$transmission)),
- points = list(pch = points,col = colors),
- lines = list(col = colors,lty = lines),
- cex.title = 1,cex = .9)
- densityplot(~mpg,data = mtcars,groups = transmission,
- main = "MPG Distribution by Transmission Type",
- xlab = "Mile per Gallon",
- pch = points,lty = lines,col = colors,lwd = 2,jitter = .005,
- key = key.trans)
- #16.2.5 页面摆放-----------
- graph1 <- histogram(~height|voice.part,data = singer,
- main = "Heights of Choral Singers by Voice Part")
- graph2 <- densityplot(~height,data = singer,groups = voice.part,
- plot.points = F,auto.key = list(columns = 4))
- plot(graph1,split = c(1,1,1,2))
- plot(graph2,split = c(1,2,1,2),#split 参数说明,c(列位置号码,行位置号码,列数,行数)
- newpage = F)
- plot(graph1,position = c(0,.3,1,1))
- plot(graph2,position = c(0,0,1,.3),#position = c(xmin, ymin, xmax, ymax)
- newpage = F)
- #16.3 ggplot2包---------
- install.packages("ggplot2")
- library(ggplot2)
- mtcars$cylinder <- as.factor(mtcars$cyl)
- qplot(cylinder,mpg,data = mtcars,geom = c("boxplot","jitter"),fill = cylinder,
- main = "Box plots with superimposed data points",
- xlab = "Number of Cylinder",ylab = "Miles per Gallon")
- transmission <- factor(mtcars$am,levels = c(0,1),labels = c("Automatic","Manual"))
- qplot(wt,mpg,data = mtcars,color = transmission,shape = transmission,
- gemo = c("point","smooth"),
- method = lm,formula = y~x,
- xlab = "Weight",ylab = "Miles Per Gallon",
- main = "Regiession Example")
- qplot(wt,mpg,data = mtcars,facets = transmission~cylinder,size = hp)
- data(singer,package = "lattice")
- qplot(height,data = singer,geom = c("density"),
- facets = voice.part~.,fill = voice.part)
- #16.4 交互式图形-----------
- plot(mtcars$wt,mtcars$mpg)
- identify(mtcars$wt,mtcars$mpg,labels = row.names(mtcars))
R语言绘图函数汇总
最新推荐文章于 2024-06-23 18:13:03 发布