日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

s-plus

發布時間:2025/7/25 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 s-plus 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.stathome.cn/manual/s/10.html

圖形

常用圖形

S-PLUS有很強的圖形功能,它可以用簡單的函數調用迅速作出數據的各種圖形,當你熟悉了S圖形的技術之后也可以指定許多圖形選項按自己的要求定制圖形。它的另一個特色是同一個繪圖函數對不同的數據對象可以作出不同的圖形。例如,用7.1.2讀入的cl數據框:

> plot(cl) > plot(cl[,1])

第一個plot()調用繪制cl中三個列的散點圖矩陣,第二個plot()調用繪制身高的散點圖(縱軸為身高值,橫軸為下標)。

最常用的繪圖函數為plot(),用plot()作兩個變量x與y的散點圖,使用如下例的方法:

> attach(cl) > plot(Height, Weight, main="體重對身高的回歸", + xlab="身高", ylab="體重")

上例在R中運行成功(見圖2),在S-PLUS中請將漢字字符串改為英文。上例也演示了S中如何輸入較長的語句:只要語句明顯地未完成(比如,缺右括號),系統將給出一個加號作為續行提示。如果輸入“x <- 1+2”時要拆行,可以在賦值號后拆,可以在加號與2之間拆,但是如果在x后拆則只能顯示x的當前值,如果在1與加號之間拆只能把1賦給x。

為了繪制連線圖,只要在plot()函數中加type="l"選項,如:

> plot((1:50)/50, log((1:50)/50), type="l") 可以繪制變量的莖葉圖,如: > stem(Weight)The decimal point is 1 digit(s) to the right of the |4 | 16 | 78 | 344550810 | 033223312 | 8314 | 0

繪制一個變量的盒形圖,如:

> boxplot(Weight)

結果見圖3。可以繪制幾個變量并排的盒形圖,比如先計算用上面的回歸擬合結果存入p1,然后繪制并排盒形圖:

> p1 <- predict(fit1, cl)[,"predictor"] > boxplot(Weight, p1)

用hist()函數可以繪制直方圖。例如:

> hist(Weight) 得圖4。

用qqnorm()函數繪制正態概率圖,如:

> qqnorm(Weight) 得圖5。

高級圖形函數

S的圖形函數分為兩類:高級圖形函數――直接繪制圖形并可自動生成坐標軸等附屬圖形元素;低級圖形函數――可以修改已有的圖形或者為繪圖規定一些選擇項。高級圖形函數總是開始一個新圖。下面我們介紹常用的高級圖形函數,以及用來修飾這些高級圖形函數的常用可選參數。

最常用的是plot()函數。比如,plot(x,y)(其中x,y是向量)對兩個變量畫散點圖。用plot(z)(其中z是一個定義了x變量和y變量的列表,或者一個兩列的矩陣)也可以達到同樣目的。如果x是一個時間序列對象(時間序列對象用ts()函數生成),plot(x)繪制時間序列曲線圖。如果x是一個普通向量,則繪制x的值對其下標的散點圖。如果x是復數向量則繪制虛部對實部的散點圖。如果f是一個因子,則plot(f)繪制f的條形圖(每個因子水平的個數)。如果f是因子,y是同長度的數值向量,則plot(f,y)對f的每一因子水平繪制y中相應數值的盒形圖。如果d是一個數據框,則plot(d)對d的每兩個變量之間作圖(散點圖等)。

如果X是一個數值型矩陣或數據框,用pairs(X)可以繪制每兩列之間的散點圖矩陣。這在變量個數不太多時可以同時看到多個變量的兩兩關系,變量太多時則難以繪制。

協同圖(coplot)是一種多變量的探索性分析圖形。其形式為coplot(y ~ x | z),其中x和y是數值型向量,z是同長度的因子。對z的每一水平,繪制相應組的x和y的散點圖。如:

> attach(cl) > coplot(Weight ~ Height | Sex)

產生圖6。對不同性別分別繪制了體重對身高的散點圖。如果z是一個數值型變量,則coplot()先對z的取值分組,然后對z的每一組取值分別繪圖。甚至可以用如coplot(y~x | x1+x2)表示對x1和x2的每一水平組合繪圖。coplot()和pairs()函數缺省繪制散點圖,但可以用一個panel=參數指定其它的低級繪圖函數,如lines,panel.smooth等。

tsplot(x)繪制時間序列曲線圖。多個參數時tsplot(x1, x2, ...)表示繪制多條曲線,自動統一曲線取值范圍。如果參數非時間序列對象則以下標1,2,3等為橫坐標繪圖。

qqnorm(x), qqline(x), qqplot(x,y)作分位數-分位數圖。qqnorm(x)對向量x作正態概率(縱軸為次序統計量值,橫軸為對應該次序統計量的標準正態分布分位數值)。qqline(x)除作qqnorm(x)圖之外還畫一條擬合曲線。qqplot(x,y)把x和y的次序統計量分別畫在x軸和y軸以比較兩個變量的分布。

hist(x)作向量x的直方圖。缺省時自動確定分組,也可以用nclass=參數指定分組個數,或者用breaks=參數指定一個分組點向量。如果指定了prob=T則縱軸顯示密度估計。

S也可以作三維圖或等值線圖,函數為persp()和contour(),見圖7和圖8。

高級圖形函數的常用選項

高級圖形函數有一些共同的選項,作為函數的可選參數(自變量)。例如:

> plot(x)

> plot(x, main="Graph of x")

其中的main就是一個可選參數,用來指定圖形的標題。沒有此選項時圖形就沒有標題。這樣的選項還有:

add=T

使函數向低級圖形函數那樣不是開始一個新圖形而是在原圖基礎上添加。

axes=F

暫不畫坐標軸,隨后可以用axis()函數更精確地規定坐標軸的畫法。缺省值是axes=T,即有坐標軸。

log="x" log="y"

log="xy"

把x軸,y軸或兩個坐標軸用對數刻度繪制。

type=

  • type="p"
  • type="l"

  • type="b"

  • type="o"

  • type="h"

  • type="s"

  • type="S"

  • type="n"

規定繪圖方式:

  • 繪點

  • 畫線

  • 繪點并在中間用線連接

  • 繪點并畫線穿過各點

  • 從點到橫軸畫垂線

  • 階梯函數;左連續

  • 階梯函數;右連續

  • 不畫任何點、線,但仍畫坐標軸并建立坐標系,適用于后面用低級圖形函數作圖。
xlab="字符串" ylab="字符串" main="字符串"

sub="字符串"

定義x軸和y軸的標簽。缺省時使用對象名。圖形的標題。

圖形的小標題,用較小字體畫在x軸下方。

低級圖形函數

高級圖形函數可以迅速簡便地繪制常見類型的圖形,但是,某些情況下你可能希望繪制一些有特殊要求的圖形。比如,你希望坐標軸按照自己的設計繪制,在已有的圖上增加另一組數據,在圖中加入一行文本注釋,繪出多個曲線代表的數據的標簽,等等。低級圖形函數讓你在已有的圖的基礎上進行添加。

常用的低級圖形函數羅列如下:

points(x,y)

lines(x,y)

在當前圖形上疊加一組點或線。可以使用plot()的type=參數來指定繪制方法,缺省時points()畫點,lines()畫線。

text(x,y, labels, ...)

在由坐標x和y給出的位置標出由labels指定的字符串。labels可以是數值型或字符型的向量,labels[i]在x[i],y[i]處標出。

abline(a, b) abline(h=y) abline(v=x)

abline(lm.obj)

在當前圖形上畫一條直線。兩個參數a, b分布給出截距和斜率。指定h=參數時繪制水平線,指定v=參數時繪制垂直線。以一個最小二乘擬合結果lm.obj作為參數時由lm.obj的$coefficients成員給出直線的截距和斜率。

polygon(x, y, ...)

以由向量x給出的橫坐標和向量y給出的縱坐標為頂點繪制多邊形。可以用col=參數指定一個顏色填充多邊形內部。

legend(x, y, legend, ...)legend(,angle=v) legend(, density=v) legend( , fill=v) legend(, col=v) legend(, lty=v) legend(, pch=v) legend(,marks=v)

legend函數用來在當前圖形的指定坐標位置繪制圖例。圖例的說明文字由向量legend提供。至少下面的v值要給出以確定要對什么圖例進行說明,v是長度與legend相同的向量。

angle參數指定幾種陰影斜角。density參數指定幾種陰影密度。fill參數指定幾種填充顏色。 col參數指定幾種顏色。 lty參數指定幾種線型。 pch參數指定幾種散點符號。為字符型向量。

marks參數也指定幾種散點符號,但使用散點符號數值代號,為數值型向量。

title(main, sub)

繪制由main指定的標題和由sub指定的小標題。

axis(side, ...)

繪制一條坐標軸。這之前的繪圖函數必須已經用axes=F選項抑制了自動的坐標軸。參數side指定在哪一邊繪制坐標軸,取值為1到4,1為下邊,然后逆時針數。可以用at=參數指定刻度位置,用labels參數指定刻度處的標簽。

低級圖形函數一般需要指定位置信息,其中的坐標指的是所謂用戶坐標,即前面的高級圖形函數所建立的坐標系中的坐標。坐標可以用兩個向量x和y給出,也可以由一個兩列的矩陣給出。如果交互作圖可以用下面介紹的locator()函數來交互地從圖形中直接輸入坐標位置。

交互圖形函數

S的低級圖形函數可以在已有圖形的基礎上添加新內容,另外,S還提供了兩個函數locator和identify可以讓用戶通過在圖中用鼠標點擊來確定位置。

函數locator(n, type)運行時會停下來等待用戶在圖中點擊,然后返回圖形中鼠標點擊的位置的坐標。等待點擊時用鼠標中鍵點擊可以選擇停止等待,立即返回。參數n指定點擊多少次后自動停止,缺省為500次;參數type如果使用則可指定繪點類型,與plot()函數中的type參數用法相同,在鼠標點擊處繪點(線、垂線,等等)。locator()的返回值是一個列表,有兩個變量(元素)x和y,分別保存點擊位置的橫坐標和縱坐標。

例如,為了在已經繪制的曲線圖中找一個空地方標上一行文本,只要使用如下程序:

> text(locator(1), "Normal density", adj=0)

text()函數的adj參數用一個數字表示文本串相對于給定的坐標的畫法,adj=0表示給定坐標為文本串左側的坐標,adj=1表示給定坐標為文本串右側的坐標,adj=0.5表示給定坐標為文本串中間的坐標。

函數identify(x, y, labels)在運行時也會停下來等待用戶點擊,直到按了鼠標中鍵,任何返回用戶在圖形中用鼠標點擊的點的序號,點擊時對點擊的點加標簽。參數x和y給出要識別的各個點的坐標。labels參數指定點擊某個點時要在旁邊繪制的文本標簽,缺省時標出此點的序號,如果只需要返回值而不想畫任何標記則可以在調用此函數時加一個plot=F參數。注意identify()與locator()不同,locator()返回圖中任意點擊位置的坐標,而identify()只返回離點擊位置最近的點的序號。

例如,我們在向量x和y中有若干個點的坐標,運行如下程序:

> plot(x, y) > identify(x, y)

這時顯示轉移到圖形窗口,進入等待狀態,用戶可以點擊圖中特別的點,該點的序號就會在旁邊標出。為了結束,只要單擊鼠標中鍵或單擊右鍵并選擇停止。返回結果為你點擊的各個點的序號:

[1] 4 6 7 8

圖形參數的使用

前面我們已經看到了如何用main=,xlab=等參數來規定高級圖形函數的一些設置。在實際繪圖,特別是繪制用于演示或出版的圖形時,S用缺省設置繪制的圖形往往不能滿足我們的要求。但是,S提供了一系列所謂圖形參數,通過使用圖形參數可以修改圖形顯示的所有各方面的設置。圖形參數包括關于線型、顏色、圖形排列、文本對齊方式等各種設置。每個圖形參數有一個名字,比如col代表顏色,取一個值,比如col="red"是紅色。每個圖形設備有一套單獨的圖形參數。

設置圖形參數分為兩種:永久設置與臨時設置。永久設置使用par()函數進行設置,設置后在退出前一直保持有效;臨時設置則是在圖形函數中加入圖形參數,如上面的例子:

> text(locator(1), "Normal density", adj=0) 中的adj參數。

par()函數用來訪問或修改當前圖形設備的圖形參數。如果不帶參數調用,如:

> par() $adj [1] 0.5$ann [1] 1………………$tcl [1] -0.5 結果為一個列表,列表的各元素名為圖形參數的名字,元素值為相應圖形參數的取值。

如果調用時指定一個圖形參數名的向量作為參數,則只返回被指定的圖形參數的列表:

> par(c("col", "lty")) $col [1] "black"$lty [1] "solid"

調用時指定名字為圖形參數名的有名參數,則修改指定的圖形參數,并返回原值的列表:

> oldpar <- par(col=4, lty=2) > oldpar $col [1] "black"$lty [1] "solid"

因為用par()修改圖形參數是保持到退出以前都有效的,而且即使是在函數內此修改仍是全局的,所以我們可以利用如下的慣用法,在完成任務后恢復原來的圖形參數:

> oldpar <- par(col=4, lty=2) ………………(需要修改圖形參數的繪圖任務) > par(oldpar) # 恢復原始的圖形參數

除了象上面那樣用par()函數永久修改圖形參數,我們還可以在幾乎任何圖形函數中指定圖形參數作為有名參數,這樣的修改是臨時的,只對此函數起作用。例如:

> plot(x, y, pch="+")

就用圖形參數pch指定了繪散點的符號為加號。這個設定只對這一張圖有效,對以后的圖形沒有影響。

圖形參數詳解

鑒于繪制有特殊需要的圖形是S的一個強項,而使用圖形參數是完成此類任務的重要手段,我們在這里較詳細地介紹S的各種圖形參數。這些圖形參數可以大體上分為以下的幾個大類,我們將分別介紹:

  • 圖形元素控制

  • 坐標軸與坐標刻度

  • 圖形邊空

  • 一頁多圖

 

一、圖形元素

圖形由點、線、文本、多邊形等元素構成。下列的圖形參數用來控制圖形元素的繪制細節:

pch="+"

pch=4

指定用于繪制散點的符號。繪制的點往往略高于或低于指定的坐標位置,只有pch="."沒有這個問題。

 

如果pch的值為從0到18之間的一個數字,將使用特殊的繪點符號。下例可以顯示所有特殊繪點符號:

> plot(c(0, 100), c(0, 100), type="n", axes=F, xlab='', ylab='') > legend(10,90, as.character(0:9), pch=0:9) > legend(50,90, as.character(10:18), pch=10:18)

lty=2

指定畫線用的線型。缺省值lty=1是實線。從2開始是各種虛線。

lwd=2

指定線粗細,以標準線粗細為單位。這個參數影響數據曲線的線寬以及坐標軸的線寬。下例繪制正弦曲線圖:

> oldpar <- par(lwd=2) > x <- (0:100)/100*2*pi > plot(x, sin(x), type="l", axes=F) > abline(h=0) > abline(v=0) > par(oldpar)

col=2

指定顏色,可應用于繪點、線、文本、填充區域、圖象。顏色值也可以用象"red","blue"這樣的顏色名指定。

font=2

用來指定字體的整數。一般font=1是正體,2是黑體,3是斜體,4是黑斜體

font.axis font.lab font.main

font.sub

分別用來指定坐標刻度、坐標軸標簽、標題、小標題所用的字體。

adj=-0.1

指定文本相對于給定坐標的對齊方式。取0表示左對齊,取1表示右對齊,取0.5表示居中。此參數的值實際代表的是出現在給定坐標左邊的文本的比例,所以adj=-0.1的效果是文本出現在給定坐標位置的右邊并空出相當于文本10%長度的距離。

cex=1.5

指定字符放大倍數。

 

二、坐標軸與坐標刻度

許多高級圖形帶有坐標軸,還可以先不畫坐標軸然后用axis()單獨加。函數box()用來畫坐標區域四周的框線。

坐標軸包括三個部件:軸線(用lty可以控制線型),刻度線,刻度標簽。它們可以用如下的圖形參數來控制:

lab=c(5, 7, 12)

第一個數為x軸希望畫幾個刻度線,第二個數為y軸希望畫幾個刻度線,這兩個數是建議性的;第三個數是坐標刻度標簽的寬度為多少個字符,包括小數點,這個數太小會使刻度標簽四舍五入成一樣的值。

las=1

坐標刻度標簽的方向。0表示總是平行于坐標軸,1表示總是水平,2表示總是垂直于坐標軸。

mgp=c(3,1,0)

坐標軸各部件的位置。第一個元素為坐標軸位置到坐標軸標簽的距離,以文本行高為單位。第二個元素為坐標軸位置到坐標刻度標簽的距離。第三個元素為坐標軸位置到實際畫的坐標軸的距離,通常是0。

tck=0.01

坐標軸刻度線長度,單位是繪圖區域大小,值為占繪圖區域的比例。tck小于0.5時x軸和y軸的刻度線將統一到相同的長度。取1時即畫格子線。取負值時刻度線畫在繪圖區域的外面。

xaxs="s"

yaxs="d"

控制x軸和y軸的畫軸方法。

取值為"s"(即standard)或"e"(即extended)的時候數據范圍控制在最小刻度和最大刻度之間。取"e"時如果有數據點十分靠近邊緣軸的范圍會略微擴大。這種畫軸方式有時會在軸的一邊留下太大的空白。

取值為"i"(即internal)或"r"(此為缺省)使得刻度線都落在數據范圍內部,而"r"方式所留的邊空較小。

取值設為"d"時會鎖定此坐標軸,后續的圖形都使用與它完全相同的坐標軸,這在要生成一系列可比較的圖形的時候是有用的。要解除鎖定需要把這個圖形參數設為其它值。

三、圖形邊空

S中一個單獨的圖由繪圖區域(繪圖的點、線等畫在這個區域中)和包圍繪圖區域的邊空組成,邊空中可以包含坐標軸標簽、坐標軸刻度標簽、標題、小標題等,繪圖區域一般被坐標軸包圍。見圖9。

邊空的大小由mai參數或mar參數控制,它們都是四個元素的向量,分別規定下方、左方、上方、右方的邊空大小,其中mai取值的單位是英寸,而mai的取值單位是文本行高度。例如:

> par(mai=c(1, 0.5, 0.5, 0))

> par(mar=c(4, 2, 2, 1))

這兩個圖形參數不是獨立的,設定一個會影響另一個。S缺省的圖形邊空常常太大,以至于有時圖形窗口較小時邊空占了整個圖形的很大一部分。通常我們可以取消右邊空,并且在不用標題時可以大大縮小上邊空。例如下例可以生成十分緊湊的圖形:

> oldpar <- par(mar=c(2,2,1,0.2))

> plot(x,y)

在一個頁面上畫多個圖時邊空自動減半,但我們往往還需要進一步減小邊空才能使多個圖有意義。

 

四、一頁多圖

R可以在同一頁面開若干個按行、列排列的窗格,在每個窗格中可以作一幅圖。每個圖有自己的邊空,而所有圖的外面可以包一個“外邊空”,見圖10。

一頁多圖用mfrow參數或mfcol參數規定,如:

> par(mfrow=c(3,2))

表示同一頁有三行兩列共六個圖,而且次序為按行填放。類似地,

> par(mfcol=c(3,2))

規定相同的窗格結構,但是次序為按列填放,即先填滿第一列的三個再填第二列。要取消一頁多圖只要再運行

> par(mfrow=c(1,1))

即可。

缺省時無外邊空。為了規定外邊空大小,可以用omi參數或oma參數。omi參數使用英寸為單位,oma參數以文本行高為單位,兩個參數均為四個元素的向量,分別給出下、左、上、右方的邊空大小。如:

> par(oma=c(2,0,3,0))

函數mtext用來在外邊空加文字標注。其用法為

mtext(text, side = 3, line = 0, outer = FALSE)

其中text為要加的文本內容,side表示在哪一邊寫(1為下,2為左,3為上,4為右),line表示邊空從里向外數的第幾行,最里面的一行是第0號,outer=TRUE時使用外邊空,否則會使用當前圖的邊空。例如:

> par(mfrow=c(2,2), oma=c(0,0,3,0), mar=c(2,1,1,0.1)) > plot(x);plot(y);boxplot(list(x=x,y=y));plot(x,y) > mtext("Simulation Data", outer=T, cex=1.5)

在多圖環境中還可以用mfg參數來直接跳到某一個窗格,比如

> par(mfg=c(2,2,3,2))

表示在三行兩列的多圖環境中直接跳到第二行第二列位置。mfg參數的后兩個表示多圖環境的行、列數,前兩個表示要跳到的位置。

可以不使用多圖環境而直接在頁面中的任意位置產生一個窗格來繪圖,參數為fig,如:

> par(fig=c(4,9,1,4)/10)

此參數為一個向量,分別給出窗格的左、右、下、上邊緣的位置,取值為占全頁面的比例,比如上面的例子在頁面的右下方開一個窗格作圖。

圖形設備

S作圖支持各種圖形設備,其中常用的是顯示器和PostScript打印機。在一個S運行期間可以有多個圖形設備同時存在。在R中,用

> x11()

打開圖形窗口繪圖,在S-PLUS中,用

> win.graph()

打開圖形窗口繪圖。再次調用這樣的函數將打開第二個圖形窗口。用

> dev.list()

可顯示以打開的圖形設備的列表。

要關閉一個圖形設備,用

> dev.off()

這可以使得圖形得以完成,例如對于postscript設備關閉設備時可完成打印或存盤。用graphics.off()函數可以關閉所有打開的圖形設備。

MS Windows下的R可以把顯示窗口中的圖形復制到剪貼板或存為各種格式的圖形文件,包括WMF、PostScript、PNG、BMP、JPEG,這樣我們可以用R生成所需圖形然后存為需要的格式。MS Windows下的S-PLUS也具有類似功能。

各版本的R和S-PLUS都支持生成PostScript圖形的功能,生成的圖形可以直接用于LaTeX排版。如果用MS Word排版則可把屏幕圖形存為WMF等格式。生成PostScript文件的設備可以用如下函數打開:

> postscript(file="result1.ps", horizontal=FALSE, width=5, height=3)

這時用圖形命令生成一個頁面的圖形,然后用dev.off()關閉設備,則可生成文件result1.ps。postscript()函數中horizotal參數指定是否將圖旋轉90度使得x軸平行于紙的長邊,width和height規定圖的寬和高,單位是英寸。

在打開了多個圖形設備后可以用dev.set()函數來選擇當前設備,dev.next()和dev.prev()分別返回下一個和上一個圖形設備。比如dev.set(dev.prev())選擇上一個圖形設備。

總結

以上是生活随笔為你收集整理的s-plus的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。