R Graph Cookbook 代码怎么写
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,R Graph Cookbook 代码怎么写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。#CHAPTER 5#Recipe 1. 多个
千家信息网最后更新 2025年01月20日R Graph Cookbook 代码怎么写
R Graph Cookbook 代码怎么写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
#CHAPTER 5#Recipe 1. 多个因素变量条形图Creating Bar charts with more than one factor variableinstall.packages("RColorBrewer") #if not already installedlibrary(RColorBrewer) citysales<-read.csv("citysales.csv")barplot(as.matrix(citysales[,2:4]), beside=TRUE, legend.text=citysales$City, args.legend=list(bty="n",horiz=TRUE), col=brewer.pal(5,"Set1"), border="white", ylim=c(0,100), ylab="Sales Revenue (1,000's of USD)", main="Sales Figures")box(bty="l")#Recipe 2.创建堆叠条形图 Creating stacked bar chartsinstall.packages("RColorBrewer")library(RColorBrewer)citysales<-read.csv("citysales.csv")barplot(as.matrix(citysales[,2:4]), legend.text=citysales$City, args.legend=list(bty="n",horiz=TRUE), col=brewer.pal(5,"Set1"), border="white", ylim=c(0,200), ylab="Sales Revenue (1,000's of USD)", main="Sales Figures")citysalesperc<-read.csv("citysalesperc.csv") par(mar=c(5,4,4,8),xpd=T)barplot(as.matrix(citysalesperc[,2:4]), col=brewer.pal(5,"Set1"), border="white", ylab="Sales Revenue (1,000's of USD)", main="Percentage Sales Figures") legend("right",legend=citysalesperc$City,bty="n",inset=c(-0.3,0),fill=brewer.pal(5,"Set1"))#Recipe 3. 调整条形图方向(水平和垂直)Adjusting the orientation of bars ?horizontal and verticalbarplot(as.matrix(citysales[,2:4]), beside=TRUE,horiz=TRUE, legend.text=citysales$City, args.legend=list(bty="n"), col=brewer.pal(5,"Set1"), border="white", xlim=c(0,100), xlab="Sales Revenue (1,000's of USD)", main="Sales Figures")par(mar=c(5,4,4,8),xpd=T) barplot(as.matrix(citysalesperc[,2:4]), horiz=TRUE, col=brewer.pal(5,"Set1"), border="white", xlab="Percentage of Sales", main="Perecentage Sales Figures")legend("right",legend=citysalesperc$City,bty="n",inset=c(-0.3,0),fill=brewer.pal(5,"Set1"))#Recipe 4.调整杆宽度、间距、颜色和边界 Adjusting bar widths, spacing, colours and bordersbarplot(as.matrix(citysales[,2:4]), beside=TRUE, legend.text=citysales$City, args.legend=list(bty="n",horiz=T), col=c("#E5562A","#491A5B","#8C6CA8","#BD1B8A","#7CB6E4"), border=FALSE, space=c(0,5), ylim=c(0,100), ylab="Sales Revenue (1,000's of USD)", main="Sales Figures")barplot(as.matrix(citysales[,2:4]), beside=T, legend.text=citysales$City, args.legend=list(bty="n",horiz=T), ylim=c(0,100), ylab="Sales Revenue (1,000's of USD)", main="Sales Figures")#Recipe 5.条线上方或旁边显示值 Displaying values on top of or next to the barsx<-barplot(as.matrix(citysales[,2:4]), beside=TRUE, legend.text=citysales$City, args.legend=list(bty="n",horiz=TRUE), col=brewer.pal(5,"Set1"), border="white", ylim=c(0,100), ylab="Sales Revenue (1,000's of USD)", main="Sales Figures")y<-as.matrix(citysales[,2:4])text(x,y+2,labels=as.character(y))#Horizontal barsy<-barplot(as.matrix(citysales[,2:4]), beside=TRUE,horiz=TRUE, legend.text=citysales$City, args.legend=list(bty="n"), col=brewer.pal(5,"Set1"), border="white", xlim=c(0,100), xlab="Sales Revenue (1,000's of USD)", main="Sales Figures")x<-as.matrix(citysales[,2:4])text(x+2,y,labels=as.character(x))#Recipe 6. Placing labels inside barsrain<-read.csv("cityrain.csv") y<-barplot(as.matrix(rain[1,-1]),horiz=T,col="white",yaxt="n",main="Monthly Rainfall in Major CitiesJanuary",xlab="Rainfall (mm)")x<-0.5*rain[1,-1] text(x,y,colnames(rain[-1]))#Recipe 7.创建带垂直误差线的条形图Creating Bar charts with vertical error barssales<-t(as.matrix(citysales[,-1]))colnames(sales)<-citysales[,1] x<-barplot(sales,beside=T,legend.text=rownames(sales),args.legend=list(bty="n",horiz=T),col=brewer.pal(3,"Set2"),border="white",ylim=c(0,100), ylab="Sales Revenue (1,000's of USD)", main="Sales Figures")arrows(x0=x,y0=sales*0.95,x1=x,y1=sales*1.05,angle=90,code=3,length=0.04,lwd=0.4)#Creating a functionerrorbars<-function(x,y,upper,lower=upper,length=0.04,lwd=0.4,...) {arrows(x0=x,y0=y+upper,x1=x,y1=y-lower,angle=90,code=3,length=length,lwd=lwd)}errorbars(x,sales,0.05*sales) #Recipe 8. 带条件变量的点阵图Modifying dotplots by grouping variablesinstall.packages("reshape")library(reshape)sales<-melt(citysales)sales$color[sales[,2]=="ProductA"] <- "red"sales$color[sales[,2]=="ProductB"] <- "blue"sales$color[sales[,2]=="ProductC"] <- "violet"dotchart(sales[,3],labels=sales$City,groups=sales[,2],col=sales$color,pch=19,main="Sales Figures",xlab="Sales Revenue (1,000's of USD)")#Recipe 9. 可读性更好的饼图Making better readable pie charts with clockwise-ordered slicesbrowsers<-read.table("browsers.txt",header=TRUE)browsers<-browsers[order(browsers[,2]),]pie(browsers[,2],labels=browsers[,1],clockwise=TRUE,radius=1,col=brewer.pal(7,"Set1"),border="white",main="Percentage Share of Internet Browser usage")#Recipe 10. 对饼图增加标签Labelling a pie chart with percentage values for each slice browsers<-read.table("browsers.txt",header=TRUE) browsers<-browsers[order(browsers[,2]),] pielabels <- sprintf("%s = %3.1f%s", browsers[,1], 100*browsers[,2]/sum(browsers[,2]), "%")pie(browsers[,2],labels=pielabels,clockwise=TRUE,radius=1,col=brewer.pal(7,"Set1"),border="white",cex=0.8,main="Percentage Share of Internet Browser usage")#Recipe 11.饼图增添图例 Adding a legend to a pie chart browsers<-read.table("browsers.txt",header=TRUE) browsers<-browsers[order(browsers[,2]),] pielabels <- sprintf("%s = %3.1f%s", browsers[,1], 100*browsers[,2]/sum(browsers[,2]), "%")pie(browsers[,2],labels=NA,clockwise=TRUE,col=brewer.pal(7,"Set1"),border="white",radius=0.7,cex=0.8,main="Percentage Share of Internet Browser usage")legend("bottomright",legend=pielabels,bty="n",fill=brewer.pal(7,"Set1"))
#Recipe 1.频率或概率的图示 Visualising distributions as frequency or probability air<-read.csv("airpollution.csv")hist(air$Nitrogen.Oxides, xlab="Nitrogen Oxide Concentrations", main="Distribution of Nitrogen Oxide Concentrations")hist(air$Nitrogen.Oxides, freq=FALSE, xlab="Nitrogen Oxide Concentrations", main="Distribution of Nitrogen Oxide Concentrations")#Recipe 2.设置直方图箱宽度和截断数 Setting bin size and number of breaksair<-read.csv("airpollution.csv")hist(air$Nitrogen.Oxides, breaks=20, xlab="Nitrogen Oxide Concentrations", main="Distribution of Nitrogen Oxide Concentrations")hist(air$Nitrogen.Oxides, breaks=c(0,100,200,300,400,500,600), xlab="Nitrogen Oxide Concentrations", main="Distribution of Nitrogen Oxide Concentrations")#Recipe 3.调整直方图风格:颜色、边界、坐标 Adjusting histogram styles: bar colours, borders and axesair<-read.csv("airpollution.csv")hist(air$Respirable.Particles, prob=TRUE, col="black", border="white", xlab="Respirable Particle Concentrations", main="Distribution of Respirable Particle Concentrations")par(yaxs="i",las=1)hist(air$Respirable.Particles, prob=TRUE, col="black", border="white", xlab="Respirable Particle Concentrations", main="Distribution of Respirable Particle Concentrations")box(bty="l")grid(nx=NA,ny=NULL,lty=1,lwd=1,col="gray")#Recipe 4.直方图上增加密度拟合线 Overlaying density line over a histogrampar(yaxs="i",las=1)hist(air$Respirable.Particles, prob=TRUE, col="black", border="white", xlab="Respirable Particle Concentrations", main="Distribution of Respirable Particle Concentrations")box(bty="l")lines(density(air$Respirable.Particles,na.rm=T),col="red",lwd=4)grid(nx=NA,ny=NULL,lty=1,lwd=1,col="gray")#Recipe 5.带直方图的矩阵图 Multiple histograms along the diagonal of a pairs plotpanel.hist <- function(x, ...) { par(usr = c(par("usr")[1:2], 0, 1.5) ) hist(x, prob=TRUE,add=TRUE,col="black",border="white") }plot(iris[,1:4], main="Relationships between characteristics of iris flowers", pch=19, col="blue", cex=0.9, diag.panel=panel.hist)#Recipe 6. Histograms in the margins of line and scatterplotsair<-read.csv("airpollution.csv")#Set up the layout firstlayout(matrix(c(2,0,1,3),2,2,byrow=TRUE), widths=c(3,1), heights=c(1,3), TRUE)#Make Scatterplotpar(mar=c(5.1,4.1,0.1,0))plot(air$Respirable.Particles~air$Nitrogen.Oxides, pch=19,col="black", xlim=c(0,600),ylim=c(0,80), xlab="Nitrogen Oxides Concentrations", ylab="Respirable Particle Concentrations")#Plot histogram of X variable in the top rowpar(mar=c(0,4.1,3,0))hist(air$Nitrogen.Oxides, breaks=seq(0,600,100), ann=FALSE,axes=FALSE, col="black",border="white")#Plot histogram of Y variable to the right of the scatterplotyhist <- hist(air$Respirable.Particles, breaks=seq(0,80,10), plot=FALSE)par(mar=c(5.1,0,0.1,1))barplot(yhist$density, horiz=TRUE, space=0,axes=FALSE, col="black",border="white")
#CHATER 7#Recipe 1. Creating box plots with narrow boxes for small number of variablesair<-read.csv("airpollution.csv")boxplot(air,las=1)boxplot(air,boxwex=0.2,las=1)par(las=1)boxplot(air,width=c(1,2))#Recipe 2. Grouping over a variablemetals<-read.csv("metals.csv")boxplot(Cu~Source,data=metals, main="Summary of Copper (Cu) concentrations by Site")boxplot(Cu~Source*Expt,data=metals, main="Summary of Copper (Cu) concentrations by Site")#Recipe 3. Varying box widths by number of observationsmetals<-read.csv("metals.csv")boxplot(Cu ~ Source, data = metals, varwidth=TRUE, main="Summary of Copper concentrations by Site")#Recipe 4. Creating box plots with notchesmetals<-read.csv("metals.csv")boxplot(Cu ~ Source, data = metals, varwidth=TRUE, notch=TRUE, main="Summary of Copper concentrations by Site")#Recipe 5. Including or excluding outliersmetals<-read.csv("metals.csv")boxplot(metals[,-1], outline=FALSE, main="Summary of metal concentrations by Site \n (without outliers)")#Recipe 6. Creating horizontal box plotsmetals<-read.csv("metals.csv")boxplot(metals[,-1], horizontal=TRUE, las=1, main="Summary of metal concentrations by Site")#Recipe 7. Changing box stylingmetals<-read.csv("metals.csv")boxplot(metals[,-1], border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of metal concentrations by Site")grid(nx=NA,ny=NULL,col="gray",lty="dashed")#Recipe 8. Adjusting the extent of plot whiskers outside the boxmetals<-read.csv("metals.csv")boxplot(metals[,-1], range=1, border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of metal concentrations by Site \n (range=1) ")boxplot(metals[,-1], range=0, border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of metal concentrations by Site \n (range=0)")#Recipe 9. Showing number of observations metals<-read.csv("metals.csv")b<-boxplot(metals[,-1], xaxt="n", border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of metal concentrations by Site")axis(side=1,at=1:length(b$names),labels=paste(b$names,"\n(n=",b$n,")",sep=""),mgp=c(3,2,0))install.packages("gplots")library(gplots)boxplot.n(metals[,-1], border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of metal concentrations by Site")#Recipe 10. Splitting a variable at arbitrary values into subsetsmetals<-read.csv("metals.csv")cuts<-c(0,40,80)Y<-split(x=metals$Cu, f=findInterval(metals$Cu, cuts))boxplot(Y, xaxt="n", border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of Copper concentrations", xlab="Concentration ranges", las=1)axis(1,at=1:length(clabels), labels=c("Below 0","0 to 40","40 to 80","Above 80"), lwd=0,lwd.ticks=1,col="gray")boxplot.cuts<-function(y,cuts) {Y<-split(metals$Cu, f=findInterval(y, cuts))b<-boxplot(Y, xaxt="n", border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of Copper concentrations", xlab="Concentration ranges", las=1)clabels<-paste("Below",cuts[1]) for(k in 1:(length(cuts)-1)) { clabels<-c(clabels, paste(as.character(cuts[k]), "to",as.character(cuts[k+1]))) }clabels<-c(clabels, paste("Above",as.character(cuts[length(cuts)])))axis(1,at=1:length(clabels),labels=clabels,lwd=0,lwd.ticks=1,col="gray")}boxplot.cuts(metals$Cu,c(0,30,60))boxplot(Cu~Source,data=metals,subset=Cu>40)#An alternative definition of boxplot.cuts()boxplot.cuts<-function(y,cuts) { f=cut(y, c(min(y[!is.na(y)]),cuts,max(y[!is.na(y)])), ordered_results=TRUE); Y<-split(y, f=f) b<-boxplot(Y, xaxt="n", border = "white", col = "black", boxwex = 0.3, medlwd=1, whiskcol="black", staplecol="black", outcol="red",cex=0.3,outpch=19, main="Summary of Copper concentrations", xlab="Concentration ranges", las=1) clabels = as.character(levels(f))axis(1,at=1:length(clabels),labels=clabels,lwd=0,lwd.ticks=1,col="gray")}boxplot.cuts(metals$Cu,c(0,40,80))
#CHAPTER 8#Recipe 1. Creating heat maps of single Z variable with scalesales<-read.csv("sales.csv")install.packages("RColorBrewer")library(RColorBrewer)rownames(sales)<-sales[,1]sales<-sales[,-1]data_matrix<-data.matrix(sales) pal=brewer.pal(7,"YlOrRd")breaks<-seq(3000,12000,1500)#Create layout with 1 row and 2 columns (for the heatmap and scale); the heatmap column is 8 times as wide as the scale columnlayout(matrix(data=c(1,2), nrow=1, ncol=2), widths=c(8,1), heights=c(1,1))#Set margins for the heatmappar(mar = c(5,10,4,2),oma=c(0.2,0.2,0.2,0.2),mex=0.5) image(x=1:nrow(data_matrix),y=1:ncol(data_matrix), z=data_matrix, axes=FALSE, xlab="Month", ylab="", col=pal[1:(length(breaks)-1)], breaks=breaks, main="Sales Heat Map")axis(1,at=1:nrow(data_matrix),labels=rownames(data_matrix), col="white",las=1) axis(2,at=1:ncol(data_matrix),labels=colnames(data_matrix), col="white",las=1)abline(h=c(1:ncol(data_matrix))+0.5, v=c(1:nrow(data_matrix))+0.5, col="white",lwd=2,xpd=FALSE)breaks2<-breaks[-length(breaks)]# Color Scalepar(mar = c(5,1,4,7)) # If you get a figure margins error while running the above code, enlarge the plot device or adjust the margins so that the graph and scale fit within the device.image(x=1, y=0:length(breaks2),z=t(matrix(breaks2))*1.001, col=pal[1:length(breaks)-1], axes=FALSE, breaks=breaks, xlab="", ylab="", xaxt="n")axis(4,at=0:(length(breaks2)-1), labels=breaks2, col="white", las=1)abline(h=c(1:length(breaks2)),col="white",lwd=2,xpd=F)#Recipe 2. Creating correlation heat mapsgenes<-read.csv("genes.csv")rownames(genes)<-genes[,1]data_matrix<-data.matrix(genes[,-1])pal=heat.colors(5)breaks<-seq(0,1,0.2)layout(matrix(data=c(1,2), nrow=1, ncol=2), widths=c(8,1), heights=c(1,1))par(mar = c(3,7,12,2),oma=c(0.2,0.2,0.2,0.2),mex=0.5) image(x=1:nrow(data_matrix),y=1:ncol(data_matrix), z=data_matrix, xlab="", ylab="", breaks=breaks, col=pal, axes=FALSE)text(x=1:nrow(data_matrix)+0.75, y=par("usr")[4] + 1.25, srt = 45, adj = 1, labels = rownames(data_matrix), xpd = TRUE)axis(2,at=1:ncol(data_matrix),labels=colnames(data_matrix),col="white",las=1)abline(h=c(1:ncol(data_matrix))+0.5,v=c(1:nrow(data_matrix))+0.5,col="white",lwd=2,xpd=F)title("Correlation between genes",line=8,adj=0)breaks2<-breaks[-length(breaks)]# Color Scalepar(mar = c(25,1,25,7))image(x=1, y=0:length(breaks2),z=t(matrix(breaks2))*1.001 ,col=pal[1:length(breaks)-1] ,axes=FALSE ,breaks=breaks ,xlab="",ylab="" ,xaxt="n")axis(4,at=0:(length(breaks2)),labels=breaks,col="white",las=1)abline(h=c(1:length(breaks2)),col="white",lwd=2,xpd=FALSE)#Recipe 3. Summarising multivariate data in a single heat mapnba <- read.csv("nba.csv")library(RColorBrewer)rownames(nba)<-nba[,1]data_matrix<-t(scale(data.matrix(nba[,-1])))pal=brewer.pal(6,"Blues")statnames<-c("Games Played", "Minutes Played", "Total Points", "Field Goals Made", "Field Goals Attempted", "Field Goal Percentage", "Free Throws Made", "Free Throws Attempted", "Free Throw Percentage", "Three Pointers Made", "Three Pointers Attempted", "Three Point Percentage", "Offensive Rebounds", "Defensive Rebounds", "Total Rebounds", "Assists", "Steals", "Blocks", "Turnovers", "Fouls")par(mar = c(3,14,19,2),oma=c(0.2,0.2,0.2,0.2),mex=0.5)#Heat map image(x=1:nrow(data_matrix),y=1:ncol(data_matrix), z=data_matrix, xlab="", ylab="", col=pal, axes=FALSE)#X axis labelstext(1:nrow(data_matrix), par("usr")[4] + 1, srt = 45, adj = 0, labels = statnames, xpd = TRUE, cex=0.85)#Y axis labelsaxis(side=2,at=1:ncol(data_matrix), labels=colnames(data_matrix), col="white",las=1, cex.axis=0.85)#White separating linesabline(h=c(1:ncol(data_matrix))+0.5, v=c(1:nrow(data_matrix))+0.5, col="white",lwd=1,xpd=F)#Graph Titletext(par("usr")[1]+5, par("usr")[4] + 12, "NBA per game performance of top 50corers", xpd=TRUE,font=2,cex=1.5)nba <- nba[order(nba$PTS),]#Recipe 4. Creating contour plotscontour(x=10*1:nrow(volcano), y=10*1:ncol(volcano), z=volcano, xlab="Metres West",ylab="Metres North", main="Topography of Maunga Whau Volcano")par(las=1)plot(0,0,xlim=c(0,10*nrow(volcano)),ylim=c(0,10*ncol(volcano)),type="n",xlab="Metres West",ylab="Metres North",main="Topography of Maunga Whau Volcano")u<-par("usr")rect(u[1],u[3],u[2],u[4],col="lightgreen")contour(x=10*1:nrow(volcano),y=10*1:ncol(volcano), volcano,col="red",add=TRUE)#Recipe 5. Creating filled contour plotsfilled.contour(x = 10*1:nrow(volcano), y = 10*1:ncol(volcano), z = volcano, color.palette = terrain.colors, plot.title = title(main = "The Topography of Maunga Whau", xlab = "Meters North", ylab = "Meters West"), plot.axes = {axis(1, seq(100, 800, by = 100)) axis(2, seq(100, 600, by = 100))}, key.title = title(main="Height\n(meters)"), key.axes = axis(4, seq(90, 190, by = 10))) #Increased detail and smoothnessfilled.contour(x = 10*1:nrow(volcano), y = 10*1:ncol(volcano), z = volcano, color.palette = terrain.colors, plot.title = title(main = "The Topography of Maunga Whau", xlab = "Meters North", ylab = "Meters West"), nlevels=100, plot.axes = {axis(1, seq(100, 800, by = 100)) axis(2, seq(100, 600, by = 100))}, key.title = title(main="Height\n(meters)"), key.axes = axis(4, seq(90, 190, by = 10))) #Recipe 6. Creating 3-dimensional surface plotsinstall.packages("rgl")library(rgl)z <- 2 * volcanox <- 10 * (1:nrow(z))y <- 10 * (1:ncol(z))zlim <- range(z)zlen <- zlim[2] - zlim[1] + 1colorlut <- terrain.colors(zlen) col <- colorlut[ z-zlim[1]+1 ] rgl.open()rgl.surface(x, y, z, color=col, back="lines")#Recipe 7. Visualizing time Series as calendar heat mapssource("calendarHeat.R")stock.data <- read.csv("google.csv")install.packages("chron")library("chron")calendarHeat(dates=stock.data$Date, values=stock.data$Adj.Close, varname="Google Adjusted Close")#Using the openair packageinstall.packages("openair")library(openair)calendarPlot(mydata)mydata$sales<-rnorm(length(mydata$nox),mean=1000,sd=1500)calendarPlot(mydata,pollutant="sales",main="Daily Sales in 2003")
#CHAPTER 9#Recipe 1. Plotting global data by countries on a world mapinstall.packages("maps")library(maps)install.packages("WDI")library(WDI)install.packages("RColorBrewer")library(RColorBrewer)colors = brewer.pal(7,"PuRd")wgdp<-WDIsearch("gdp")w<-WDI(country="all", indicator=wgdp[4,1], start=2005, end=2005)w[63,1] <- "USA"x<-map(plot=FALSE)x$measure<-array(NA,dim=length(x$names))for(i in 1:length(w$country)) { for(j in 1:length(x$names)) { if(grepl(w$country[i],x$names[j],ignore.case=T)) x$measure[j]<-w[i,3] }}sd = data.frame(col=colours,values=seq(min(x$measure[!is.na(x$measure)]),max(x$measure[!is.na(x$measure)])*1.0001,length.out=7))#intervals color schemesc<-array("#FFFFFF",dim=length(x$names))for (i in 1:length(x$measure)) if(!is.na(x$measure[i])) sc[i]=as.character(sd$col[findInterval(x$measure[i],sd$values)])breaks<-sd$valueslayout(matrix(data=c(2,1), nrow=1, ncol=2), widths=c(8,1), heights=c(8,1))# Color Scale firstpar(mar = c(20,1,20,7),oma=c(0.2,0.2,0.2,0.2),mex=0.5) image(x=1, y=0:length(breaks),z=t(matrix(breaks))*1.001 ,col=colours[1:length(breaks)-1] ,axes=FALSE ,breaks=breaks ,xlab="",ylab="" ,xaxt="n")axis(4,at=0:(length(breaks)-1),labels=round(breaks),col="white",las=1)abline(h=c(1:length(breaks)),col="white",lwd=2,xpd=F)#Mapz<-map(col=sc,fill=TRUE,lty="blank")map(add=TRUE,col="gray",fill=FALSE)title("CO2 emissions (kg per 2000 US$ of GDP)")#Recipe 2. Creating graphs with regional mapslibrary(maps)library(RColorBrewer)x<-map("state",plot=FALSE)for(i in 1:length(rownames(USArrests))) { for(j in 1:length(x$names)) { if(grepl(rownames(USArrests)[i],x$names[j],ignore.case=T)) x$measure[j]<-as.double(USArrests$Murder[i]) }}colours <- brewer.pal(7,"Reds")sd <- data.frame(col=colours, values=seq(min(x$measure[!is.na(x$measure)]), max(x$measure[!is.na(x$measure)])*1.0001, length.out=7))breaks<-sd$valuesmatchcol<-function(y) { as.character(sd$col[findInterval(y,sd$values)])}layout(matrix(data=c(2,1), nrow=1, ncol=2), widths=c(8,1),heights=c(8,1))# Color Scale firstpar(mar = c(20,1,20,7),oma=c(0.2,0.2,0.2,0.2),mex=0.5) image(x=1, y=0:length(breaks),z=t(matrix(breaks))*1.001 ,col=colours[1:length(breaks)-1] ,axes=FALSE ,breaks=breaks ,xlab="", ylab="", xaxt="n")axis(4,at=0:(length(breaks)-1),labels=round(breaks),col="white",las=1)abline(h=c(1:length(breaks)),col="white",lwd=2,xpd=F)#Mapmap("state", boundary = FALSE, col=matchcol(x$measure), fill=TRUE,lty="blank")map("state", col="white",add = TRUE)title("Murder Rates by US State in 1973 \n (arrests per 100,000 residents)", line=2)map("county", "new york")map("state", region = c("california", "oregon", "nevada")) map('italy', fill = TRUE, col = brewer.pal(7,"Set1"))install.packages("sp")library(sp)load(url("http://gadm.org/data/rda/FRA_adm1.RData"))gadm$rainfall<-rnorm(length(gadm$NAME_1),mean=50,sd=15)spplot(gadm,"rainfall", col.regions = rev(terrain.colors(gadm$rainfall)), main="Rainfall (simulated) in French administrative regions")#Recipe 3. Plotting data on Google mapsinstall.packages("rgdal")library(rgdal)install.packages("RgoogleMaps")library(RgoogleMaps)air<-read.csv("londonair.csv")london<-GetMap(center=c(51.51,-0.116), zoom =10, destfile = "London.png", maptype = "mobile")PlotOnStaticMap(london,lat = air$lat, lon = air$lon, cex=2,pch=19,col=as.character(air$color))london<-GetMap(center=c(51.51,-0.116),zoom =10, destfile = "London_satellite.png", maptype = "satellite")PlotOnStaticMap(london,lat = air$lat, lon = air$lon, cex=2,pch=19,col=as.character(air$color))GetMap(center=c(40.714728,-73.99867), zoom =14, destfile = "Manhattan.png", maptype = "hybrid");#Using OpenStreetMapGetMap.OSM(lonR= c(-74.67102, -74.63943), latR = c(40.33804,40.3556), scale = 7500, destfile = "PrincetonOSM.png")#Recipe 4. Creating and reading KML datainstall.packages("rgdal")library(rgdal)cities <- readOGR(system.file("vectors", package = "rgdal")[1], "cities")writeOGR(cities, "cities.kml", "cities", driver="KML")df <- readOGR("cities.kml", "cities")#Recipe 5. Working with ESRI shapefilesinstall.packages("maptools")library(maptools)sfdata <- readShapeSpatial(system.file("shapes/sids.shp", package="maptools")[1], proj4string=CRS("+proj=longlat"))plot(sfdata, col="orange", border="white", axes=TRUE)#Output as shapefilewriteSpatialShape(sfdata,"xxpoly")install.packages("shapefiles")library(shapefiles)sf<-system.file("shapes/sids.shp", package="maptools")[1]sf<-substr(sf,1,nchar(sf)-4)sfdata <- read.shapefile(sf)write.shapefile(sfdata, "newsf")
#CHAPTER 10#Recipe 1. Exporting graphs in high resolution image formats: PNG, JPEG, BMP, TIFFpng("cars.png",res=200,height=600,width=600)plot(cars$dist~cars$speed,main="Relationship between car distance and speed",xlab="Speed (miles per hour)",ylab="Distance travelled (miles)",xlim=c(0,30),ylim=c(0,140),xaxs="i",yaxs="i",col="red",pch=19)dev.off()png("cars.png",res=200,height=600,width=600)par(mar=c(4,4,3,1),omi=c(0.1,0.1,0.1,0.1),mgp=c(3,0.5,0), las=1,mex=0.5, cex.main=0.6,cex.lab=0.5,cex.axis=0.5)plot(cars$dist~cars$speed,main="Relationship between car distance and speed",xlab="Speed (miles per hour)",ylab="Distance travelled (miles)",xlim=c(0,30),ylim=c(0,140),xaxs="i",yaxs="i",col="red",pch=19,cex=0.5)dev.off()#Recipe 2. Exporting graphs in vector formats: SVG, PDF, PSpdf("cars.pdf")plot(cars$dist~cars$speed,main="Relationship between car distance and speed",xlab="Speed (miles per hour)",ylab="Distance travelled (miles)",xlim=c(0,30),ylim=c(0,140),xaxs="i",yaxs="i",col="red",pch=19,cex=0.5)dev.off()svg("3067_10_03.svg")#plot command heredev.off()postscript("3067_10_03.ps")#plot command heredev.off()#Exporting to SVG for Windows usersinstall.packages("Cairo")library(Cairo)CairoSVG("3067_10_03.svg")#plot command heredev.off()pdf("multiple.pdf")for(i in 1:3) plot(cars,pch=19,col=i)dev.off()pdf("multiple.pdf",colormodel=攃myk?for(i in 1:3) plot(cars,pch=19,col=i)dev.off()#Recipe 3. Adding Mathematical and scientific notations (typesetting)plot(air,las=1,main=_expression(paste("Relationship between ",PM[10]," and ",NO[X])),xlab=_expression(paste(NO[X]," concentrations (",mu*g^-3,")")),ylab=_expression(paste(PM[10]," concentrations (",mu*g^-3,")")))demo(plotmath)#Recipe 4. Adding text descriptions to graphspar(mar=c(12,4,3,2))plot(rnorm(1000),main="Random Normal Distribution")desc<-_expression(paste("The normal distribution has density ",f(x) == frac(1,sqrt(2*pi)*sigma)~ plain(e)^frac(-(x-mu)^2,2*sigma^2)))mtext(desc,side=1,line=4,padj=1,adj=0)mtext(_expression(paste("where ", mu, " is the mean of the distribution and ",sigma," the standard deviation.")),side=1,line=7,padj=1,adj=0)dailysales<-read.csv("dailysales.csv")par(mar=c(5,5,12,2))plot(units~as.Date(date,"%d/%m/%y"),data=dailysales,type="l",las=1,ylab="Units Sold",xlab="Date")desc<-"The graph below shows sales data for Product A in the month of January 2010. There were a lot of ups and downs in the number of units sold. The average number of units sold was around 5000. The highest sales were recorded on the 27th January, nearly 7000 units sold."mtext(paste(strwrap(desc,width=80),collapse="\n"),side=3,line=3,padj=0,adj=0)title("Daily Sales Trends",line=10,adj=0,font=2)#Recipe 5. Using Graph Templatesthemeplot<-function(x,theme,...) { i<-which(themes$theme==theme) par(bg=as.character(themes[i,]$bg_color),las=1) plot(x,type="n",...) u<-par("usr") plotcol=as.character(themes[i,]$plot_color) rect(u[1],u[3],u[2],u[4],col=plotcol,border=plotcol) points(x,col=as.character(themes[i,]$symbol_color),...) box()}themeplot(rnorm(1000),theme="white",pch=21,main="White")themeplot(rnorm(1000),theme="lightgray",pch=21,main="Light Gray")themeplot(rnorm(1000),theme="dark",pch=21,main="Dark")themeplot(rnorm(1000),theme="pink",pch=21,main="Pink")#Recipe 6. Choosing font families and styles under Windows, OS X and Linuxpar(mar=c(1,1,5,1))plot(1:200,type="n",main="Fonts under Windows",axes=FALSE,xlab="",ylab="")text(0,180,"Arial \n(family=\"sans\", font=1)", family="sans",font=1,adj=0)text(0,140,"Arial Bold \n(family=\"sans\", font=2)", family="sans",font=2,adj=0)text(0,100,"Arial Italic \n(family=\"sans\", font=3)", family="sans",font=3,adj=0)text(0,60,"Arial Bold Italic \n(family=\"sans\", font=4)", family="sans",font=4,adj=0)text(70,180,"Times \n(family=\"serif\", font=1)", family="serif",font=1,adj=0)text(70,140,"Times Bold \n(family=\"serif\", font=2)", family="serif",font=2,adj=0)text(70,100,"Times Italic \n(family=\"serif\", font=3)", family="serif",font=3,adj=0)text(70,60,"Times Bold Italic \n(family=\"serif\", font=4)", family="serif",font=4,adj=0)text(130,180,"Courier New\n(family=\"mono\", font=1)", family="mono",font=1,adj=0)text(130,140,"Courier New Bold \n(family=\"mono\", font=2)", family="mono",font=2,adj=0)text(130,100,"Courier New Italic \n(family=\"mono\", font=3)", family="mono",font=3,adj=0)text(130,60,"Courier New Bold Italic \n(family=\"mono\", font=4)", family="mono",font=4,adj=0)windowsFonts(GE = windowsFont("Georgia"))text(150,80,"Georgia",family="GE")#Recipe 7. Choosing fonts for PostScripts and PDFspdf("fonts.pdf",family="AvantGarde")plot(rnorm(100),main="Random Normal Distribution")dev.off()postscript("fonts.ps",family="AvantGarde")plot(rnorm(100),main="Random Normal Distribution")dev.off()names(pdfFonts())
看完上述内容,你们掌握R Graph Cookbook 代码怎么写的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
条形
直方图
调整
代码
内容
变量
宽度
方法
更多
边界
问题
颜色
束手无策
为此
原因
可读性
因素
图例
坐标
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
生物信息租服务器
研华服务器是做什么的
软件开发工具2020年真题
青岛御风启航网络技术
网约车软件开发公司有哪些
软件开发到公司先做什么
sql数据库是免费使用吗
网络安全常识性知识
常州华菱软件开发公司
开票服务器管理打印不了
涛思数据库插件开发
上海网络技术转让价格表格
河南科技大学计算机网络技术
乌班图服务器
网络安全攻防团队都有哪些
李靖软件开发
汕头应用软件开发订制
sql显示数据库用户名
软件开发的风险评估表
文学数据库有
数据库管理的体系架构
上海掌福网络技术有限公司
杨浦区品牌软件开发口碑推荐
obc数据库设置方法
无锡管理软件开发代码
服务器储存技术工程师
javajdbc读取数据库
网络安全进校园手报是多少
一句网络安全法
软件开发企业有哪些职位