zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然 R语言开发学习:中级绘图

    #------------------------------------------------------------------------------------#
    # R in Action (2nd ed): Chapter 11                                                   #
    # Intermediate graphs                                                                #
    # requires packages car, scatterplot3d, gclus, hexbin, IDPmisc, Hmisc,               # 
    #                   corrgram, vcd, rlg to be installed                               #
    # install.packages(c("car", "scatterplot3d", "gclus", "hexbin", "IDPmisc", "Hmisc",  #
    #                    "corrgram", "vcd", "rld"))                                      #
    #------------------------------------------------------------------------------------#
    
    par(ask=TRUE)
    opar <- par(no.readonly=TRUE) # record current settings
    
    # Listing 11.1 - A scatter plot with best fit lines
    attach(mtcars)                                                     
    plot(wt, mpg, 
         main="Basic Scatterplot of MPG vs. Weight",       
         xlab="Car Weight (lbs/1000)", 
         ylab="Miles Per Gallon ", pch=19)
    abline(lm(mpg ~ wt), col="red", lwd=2, lty=1)            
    lines(lowess(wt, mpg), col="blue", lwd=2, lty=2)
    detach(mtcars)
    
    # Scatter plot with fit lines by group
    library(car) 
    scatterplot(mpg ~ wt | cyl, data=mtcars, lwd=2,
                main="Scatter Plot of MPG vs. Weight by # Cylinders", 
                xlab="Weight of Car (lbs/1000)", 
                ylab="Miles Per Gallon", id.method="identify",
                legend.plot=TRUE, labels=row.names(mtcars), 
                boxplots="xy")
    
    
    # Scatter-plot matrices
    pairs(~ mpg + disp + drat + wt, data=mtcars, 
          main="Basic Scatterplot Matrix")
    
    library(car)
    library(car)
    scatterplotMatrix(~ mpg + disp + drat + wt, data=mtcars,
                      spread=FALSE, smoother.args=list(lty=2),
                      main="Scatter Plot Matrix via car Package")
    
    
    # high density scatterplots
    set.seed(1234)
    n <- 10000
    c1 <- matrix(rnorm(n, mean=0, sd=.5), ncol=2)
    c2 <- matrix(rnorm(n, mean=3, sd=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 10000 Observations"))
    
    with(mydata,
         smoothScatter(x, y, main="Scatter Plot colored by Smoothed Densities"))
    
    library(hexbin)
    with(mydata, {
      bin <- hexbin(x, y, xbins=50)
      plot(bin, main="Hexagonal Binning with 10,000 Observations")
    })
    
    
    # 3-D Scatterplots
    library(scatterplot3d)
    attach(mtcars)
    scatterplot3d(wt, disp, mpg,
                  main="Basic 3D Scatter Plot")
    
    scatterplot3d(wt, disp, mpg,
                  pch=16,
                  highlight.3d=TRUE,
                  type="h",
                  main="3D Scatter Plot with Vertical Lines")
    
    s3d <-scatterplot3d(wt, disp, mpg,
                        pch=16,
                        highlight.3d=TRUE,
                        type="h",
                        main="3D Scatter Plot with Vertical Lines and Regression Plane")
    fit <- lm(mpg ~ wt+disp)
    s3d$plane3d(fit)
    detach(mtcars)
    
    # spinning 3D plot
    library(rgl)
    attach(mtcars)
    plot3d(wt, disp, mpg, col="red", size=5)
    
    # alternative
    library(car)
    with(mtcars,
         scatter3d(wt, disp, mpg))
    
    
    # bubble plots
    attach(mtcars)
    r <- sqrt(disp/pi)
    symbols(wt, mpg, circle=r, inches=0.30,
            fg="white", bg="lightblue",
            main="Bubble Plot with point size proportional to displacement",
            ylab="Miles Per Gallon",
            xlab="Weight of Car (lbs/1000)")
    text(wt, mpg, rownames(mtcars), cex=0.6)
    detach(mtcars)
    
    
    # Listing 11.2 - Creating side by side scatter and line plots
    opar <- par(no.readonly=TRUE)
    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(opar)
    
    
    # Listing 11.3 - Line chart displaying the growth of 5 Orange trees over time
    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 <- c(1:ntrees)
    plotchar <- seq(18, 18+ntrees, 1)
    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 plot")
    legend(xrange[1], yrange[2],
           1:ntrees,
           cex=0.8,
           col=colors,
           pch=plotchar,
           lty=linetype,
           title="Tree"
    )                                          
    
    
    # Correlograms
    options(digits=2)
    cor(mtcars)
    
    library(corrgram)
    corrgram(mtcars, order=TRUE, lower.panel=panel.shade,
             upper.panel=panel.pie, text.panel=panel.txt,
             main="Corrgram of mtcars intercorrelations")
    
    corrgram(mtcars, order=TRUE, lower.panel=panel.ellipse,
             upper.panel=panel.pts, text.panel=panel.txt,
             diag.panel=panel.minmax,
             main="Corrgram of mtcars data using scatter plots
    and ellipses")
    
    cols <- colorRampPalette(c("darkgoldenrod4", "burlywood1",
                               "darkkhaki", "darkgreen"))
    corrgram(mtcars, order=TRUE, col.regions=cols,
             lower.panel=panel.shade,
             upper.panel=panel.conf, text.panel=panel.txt,
             main="A Corrgram (or Horse) of a Different Color")
    
    
    # Mosaic Plots
    ftable(Titanic)
    library(vcd)
    mosaic(Titanic, shade=TRUE, legend=TRUE)
    
    library(vcd)
    mosaic(~Class+Sex+Age+Survived, data=Titanic, shade=TRUE, legend=TRUE)
    
    
    # type= options in the plot() and lines() functions
    x <- c(1:5)
    y <- c(1:5)
    par(mfrow=c(2,4))
    types <- c("p", "l", "o", "b", "c", "s", "S", "h")
    for (i in types){
      plottitle <- paste("type=", i)
      plot(x,y,type=i, col="red", lwd=2, cex=1, main=plottitle)
    }
  • 相关阅读:
    cscope
    C语言
    PMP-------框架
    shell--打开新的.sh文件,直接添加title
    工欲善其事,必先利其器
    同步异步阻塞非阻塞可中断的睡眠不可中断的睡眠
    内核--时间
    没有必要的事情,要学会适当忍让!
    嵌入式开发之CPU的那些事...
    互斥技术----原子变量和自旋锁
  • 原文地址:https://www.cnblogs.com/tszr/p/11175767.html
Copyright © 2011-2022 走看看