99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀(R語言)圖形過程
(R語言)圖形過程
2018-03-06
收藏

R語言)圖形過程

在Windows下用window()命令可以打開圖形窗口。

12.1 高級繪圖命令

    高級繪圖函數(shù),由函數(shù)參數(shù)提供數(shù)據生成一幅完整的圖形。其中適當?shù)淖鴺溯S,標簽和標題都自動生成了(除非你另外指定了)。高級繪圖命令每次都生成一幅新的圖形,清除當前的圖形(如果需要的話)。

1  plot()函數(shù)

這是一個通用函數(shù):生成圖形的類型取決于第一個參數(shù)的類型或類別(class)。
plot(x,y)  plot(xy):
如果x,y是向量,plot(x,y)生成一幅y對x的散點圖。用包含兩個元素x,y的一個列表或一個兩列的矩陣作為一個參數(shù)(第二種形式那樣的)也能達成相同的效果。
plot(x):
如果x是一個時間序列,這個命令生成一個時間序列圖,如果x是一個數(shù)值型向量,則生成一個向量值對它們向量索引的土,而如果x是一個復向量,則生成一個向量中元素的虛部對實部的圖。
plot(f)   plot(f,y):
f是一個因子對象,y是一個數(shù)值型向量。第一種形式生成一個f的條形圖;第二種形式生成y對應于f各個水平的箱線圖
plot(df)   plot( expr)    plot(y expr):
df是一個數(shù)據幀,y是任意對象,expr是由對象名稱組成的列表,分隔符'+'(例如,a + b + c)。前兩種形式生成分布式的圖形,第一種是數(shù)據幀中的變量,第二種是一系列被命名的對象。第三種形式生成y對expr中每個對象的圖。

2 顯示多元數(shù)據

如果X是一個數(shù)值矩陣或數(shù)據幀,下面的命令
> pairs(X) 
生成一個配對的散點圖矩陣,矩陣由X中的每列的列變量對其他各列列變量的散點圖組成,得到的矩陣中每個散點圖行、列長度都是固定的。

當問題涉及到三、四個變量時,使用coplot更好些。如果a和b是數(shù)值向量,c是數(shù)值向量或因子對象(全都是相同長度的),下面的命令
> coplot(a ~ b | c)
對應c的某些給定值生成數(shù)個a對b的散點圖。當c是一個因子時,這個命令也就是對c的每個水平生成a對b的散點圖。當c是數(shù)值向量的時候,這個數(shù)值向量被分為一系列的條件區(qū)間(conditioning intervals),對應c的每個區(qū)間生成一個a對b的散點圖。區(qū)間的數(shù)量和位置可以通過coplot()的參數(shù)given.values來控制,函數(shù)co.intervals()也可以用來選擇區(qū)間。我們也可以使用兩個給定變量通過命令
>coplot(a ~ b | c+d)
對c和d的每個聯(lián)合條件區(qū)間生成a對b的散點圖

函數(shù)coplot()和pairs()都可以使用參數(shù)panel=,這個參數(shù)可以用來定制我們得到的圖形類型。默認的是points()函數(shù),生成一個散點圖,不過通過在參數(shù)panel=中提供某些其它的低級圖形函數(shù),我們可以生成需要的各種圖形。一個很有用的函數(shù)例子是panel.smooth()。

3 顯示圖形

qqnorm(x)   qqline(x)    qqplot(x,y)
分布比較圖。第一種形式生成向量x對期望正態(tài)分數(shù)(一個正態(tài)記分圖),第二個在上面的圖上添加一條穿過分布分位點和數(shù)據分位點的直線。第三個命令生成x的分位點對y分位點圖,用于分別比較它們的分布。

hist(x)     hist(x,nclass=n)       hist(x,breaks=b, . . . )
生成數(shù)值變量x的直方圖。通常會自動選定一個合理的類別數(shù),不過可以通過nclass=參數(shù)來指定一個推薦值?;蛘咄ㄟ^參數(shù)breaks=來指定分界點。如果給定了probability=TRUE參數(shù),那么條形圖代表相對頻數(shù)而不是累計數(shù)。

dotchart(x, . . . )
創(chuàng)建一個x中數(shù)據的點圖(dotchart)。點圖中y軸給出x中數(shù)據的標簽,x軸給出它們的值。它允許對落入某一特定區(qū)間的所有數(shù)據項方便的進行可視化選擇。

image(x,y,z, . . . )     contour(x,y,z, . . . )    persp(x,y,z, . . . )
生成三個變量的圖。函數(shù)image是用不同的顏色繪制一些矩形方格來展示z的值,函數(shù)contour通過繪制等高線來展示z的值,函數(shù)persp繪制一個3D面。

4 參數(shù)配置

add=TRUE      強制函數(shù)按照低級圖形函數(shù)的方式操作,將圖形置于當前圖形上(僅對某些函數(shù)有效)。
axes=FALSE       暫時禁止坐標軸的生成|以便使用axis()函數(shù)添加你自己定制的坐標軸。默認情況是axes=TRUE,即包含坐標軸。
log="x"   log="y"   log="xy"      令x,y或者兩者全都對數(shù)化。這個參數(shù)對許多函數(shù)都有效,不過不是全部。
type=          參數(shù)type=控制所生成圖形的類型:
        type="p" 繪制單獨的點(默認值)
        type="l" 繪制線
        type="b" 繪制由線連接的點(both)
        type="o" 將點繪在線上
        type="h" 繪制從點到零軸的垂線(high-density)
        type="s" 階梯式圖。第一種形式中,點由垂線的頂部定義;第二種形式里用底部定義。
        type="n" 不繪制。不過坐標軸是繪出的(默認情況)而且要根據數(shù)據繪出坐標系統(tǒng)。用來給后續(xù)的低級圖形函數(shù)創(chuàng)建圖形作基礎。
xlab=string    ylab=string          x軸或y軸的標簽。使用這些參數(shù)來改變默認的標簽,通常的默認值是調用高級繪圖函數(shù)時所使用對象的名稱。
main=string          圖表標題,位于圖形的頂部,大字體顯示。 
sub=string         子標題,位于x軸下面,用較小的字體顯示。

12.2   低級繪圖命令

有些時候高級繪圖函數(shù)并不能很精確的生成我們想要的圖形。這種情況下,我們可以通過低級繪圖命令在當前圖形上添加信息(例如,點、線或文本)。

points(x,y)    lines(x,y)
在當前圖形上添加點或線。函數(shù)plot()的參數(shù)type=也可以用于這些函數(shù)(默認的是"p"代表points()和"l"代表lines())。

text(x,y,labels, . . . )
給定點坐標x,y,在該點添加文本。通常labels是一個整數(shù)或字符向量,其中l(wèi)abels[i]出現(xiàn)在點(x[i],y[i])。默認值是1:length(x)。
Note: 這個函數(shù)通常用于這樣的序列中
 > plot(x, y, type="n"); text(x, y, names)
圖形參數(shù)type="n"阻止了點的生成,但是建立了坐標軸,由函數(shù)text()提供字符向量names所指定的特定字符。

abline(a, b)   abline(h=y)   abline(v=x)    abline(lm.obj)
在當前圖上添加一條斜率為b,截距為a的直線。h=y在圖形指定的高度上繪制一條貫穿圖形的水平線,同樣的,v=x在x軸的指定位置繪制一條貫穿的垂線。而lm.obj是一個包含coefficients組件的列表,該組件的長度為2,分別當作截距和斜率。

polygon(x, y, . . . )
繪制一個多邊形,其頂點由(x,y)指定。同時還(可選的)可以加上陰影線,如果圖形設備允許的話還可以將多邊形填充。

legend(x, y, legend, . . . )
這當前圖形的指定位置添加圖例。繪制的字符,線條類型,顏色等等由字符向量legend指定。除此之外至少還要給出一個參數(shù)v,與繪圖單元的相應值,分別有:
legend( , fill=v)填充方框的顏色
legend( , col=v)繪制點線的顏色
legend( , lty=v)線條類型
legend( , lwd=v)線條寬度
legend( , pch=v)繪制字符(字符向量)

title(main,sub)
在當前圖形的頂部用大字題添加一個標題main,在底部用較小的字體添加子標題sub。

axis(side, . . . )
在當前圖形的指定邊上添加坐標,在哪個邊上由第一個參數(shù)指定(1到4,從底部按照順時針順序)。其他參數(shù)控制坐標的位置|在圖形內或圖形外,以及標記的位置和標簽。適合在調用參數(shù)為axes=FALSE的函數(shù)plot()后添加定制的坐標軸。

低級繪圖函數(shù)通常都需要一些位置信息(例如,x,y坐標)來決定在哪里添加新的元素。坐標以用戶坐標(user coordinates)的形式給出,這個坐標系是根據所提供的數(shù)據由之前的高級繪圖語句定義的。需要x,y參數(shù)的地方還可以選用一個單獨的參數(shù),即一個由名為x,y的元素組成的列表。相似的,一個兩列的矩陣也可以。像locator()(后面會提到)這樣的函數(shù)也可以按照這種方式交互的指定圖形中的位置。

添加數(shù)學注釋
某些情況下需要在圖形中加入數(shù)學符號或公式。在R中可以通過在text, mtext,axis或title中指定一個表達式來實現(xiàn)。例如,下面的代碼繪制了二項概率函數(shù)的公式:
> text(x, y, expression(paste(bgroup("(", atop(n, x), ")"),p^x, q^{n-x})))
更多的信息,包括其特性的一個完整列表可以在R中通過下面的命令得到:
> help(plotmath)
> example(plotmath)

添加Hershey矢量字體
> help(Hershey)
> example(Hershey)

12.3 圖形的交互

R提供了函數(shù),使用戶可以通過鼠標從圖形中釋放信息或添加信息。

locator(n,type)
等待用戶使用鼠標左鍵在當前圖形上選擇位置。直到n(默認是512)個點都選完或者點擊了鼠標另一個鍵(Unix,Windows),在Mac下用鼠標點擊圖形窗口外的部分也可以結束。參數(shù)type的效果和在高級繪圖函數(shù)中使用時是一樣的,即在選擇的點繪制指定的圖形。默認情況是不繪制圖形。函數(shù)locator()將所選點的坐標返回到一個列表中,列表包含x,y兩個組件。
通常locator()在調用的時候并不帶參數(shù)。這個功能在為圖例或標簽這樣的圖形元素選擇位置時比較有用,尤其是這些位置不好通過計算得到的時候。舉個例子,如果要在一個野點附近添加一些信息,可以使用下面的命令
> text(locator(1), "Outlier", adj=0)

identify(x, y, labels)
允許用戶在x,y(使用鼠標左鍵)定義的點附近繪制相應的labels的組件(如果沒有給出labels就給出該點的序號),突顯該點。當鼠標的另一個鍵被點擊時(Unix,Windows)返回被選點的序號,在Mac下通過點擊圖形窗口外來實現(xiàn)這個效果。
有時我們更想確定圖形中的點,而非它們的位置。例如,我們可能希望從圖示中選出某些感興趣的觀測點,然后進行某些操作。通過兩個數(shù)值向量x,y給定一系列坐標(x; y),我們可以使用identify()函數(shù):
> plot(x,y) > identify(x,y)
函數(shù)identify()本身不繪圖,但是允許用戶移動鼠標,在某點附近點擊左鍵。離鼠標指針最近的點將被突顯,并標出其序號(也就是它在向量x/y中的位置)。或者使用identify()的labels參數(shù),把某些信息(例如案例名稱)作為突顯的標志;或者通過plot=FALSE參數(shù)取消所有突顯標志。當選點的過程結束后,identify()返回所選點的序號;用戶可以使用這些序號從x和y中釋放所選的點。

12.4 使用圖形參數(shù)

通過圖形參數(shù)可以定制圖形顯示的幾乎所有方面。R包含大量的圖形參數(shù),可以控制的包括線條類型,顏色,圖標排列,文本對齊等等。

1 持續(xù)性變更 (Permanent changes): par()函數(shù)

通過par()函數(shù)設定圖形參數(shù)的值會持續(xù)性的更改參數(shù)的值,也就是說這之后(在當前設備上)所有對圖形函數(shù)的調用都受到新值的影響。
函數(shù)par()用于存取和修改當前圖形設備的圖形參數(shù)列表。
par()不帶任何參數(shù),返回當前設備所有圖形參數(shù)和它們的值的列表。
par(c("col","lty"))
參數(shù)為一個字符向量,僅返回參數(shù)中指定的圖形參數(shù)(也是作為一個列表)。
par(col=4, lty=2)
帶指定參數(shù)(或一個列表型參數(shù)),設定指定圖形參數(shù)的值,并將參數(shù)的原始值作為一個列表返回。
所以如果想設定參數(shù)繪制一些圖形后再恢復成原來的設定,可以這么做:
> oldpar <- par(col=4, lty=2) 
. . . plotting commands . . . 
> par(oldpar)

2 臨時性變更:圖形函數(shù)的參數(shù)

圖形參數(shù)也可以作為(幾乎)所有圖形函數(shù)的命名參數(shù)。這種方式的效果和用于par()函數(shù)的效果是一樣的,只不過這種改變只在函數(shù)調用的區(qū)間內有效。比如:
> plot(x, y, pch="+")
生成一個以加號作為繪圖符號的散點圖,而不改變后續(xù)圖形的默認的繪圖符號。

3 圖形參數(shù)列表

A  圖形元素
R圖表由點、線、文本和多邊形(填充區(qū))組成。下面的圖形參數(shù)控制了圖形元素的繪制:
pch="+" 用來繪點的字符。這個默認值隨不同的圖形驅動是不同的,不過通常都是'±'。除非使用"."作為繪圖字符,否則繪制的點都會比適當?shù)奈恢酶咭稽c或者低一點,而不是恰好在指定位置。
pch=4當給定一個0到18的整數(shù)時,會生成一個特殊的繪圖符號。通過下面的命令可以看這些符號都有什么。
> legend(locator(1), as.character(0:18), pch=0:18)
lty=2 線條類型。并不是所有圖形設備都支持多種線條類型(在那些支持的設
備上也不全一樣),不過線條類型1始終是實線,2及以上的是點、劃線或者它們的組合。
lwd=2 線條寬度。所需的線條寬度,是"標準"線條寬度的倍數(shù)。對line()等函數(shù)繪制的線條和坐標軸都有效果。
col=2 點、線、文本、填充區(qū)和圖像使用的顏色。每種圖形元素都有其可用的顏色列表,這個參數(shù)的值就是顏色在列表中的序號。顯然,這個參數(shù)值對有限的一類設備有效。
font=2 指定文本所使用字體的一個整數(shù)。如果可能的話,設備驅動會把1對應普通文本,2對應粗體,3對應斜體,4對應粗斜體。
font.axis   font.lab    font.main   font.sub 這幾個參數(shù)分別指定坐標軸注釋,x,y軸的標簽,主、副標題所用的字體。
adj=-0.1 文本對齊和繪圖位置有關。0代表左對齊,1代表右對齊,0.5代表水平的中間位置。當前的值使會圖位置到左端距離的比例,所以-0.1在文本和繪圖位置之間留10%的空白。
cex=1.5 字符縮放。這個值是所需文本字符(包括繪圖字符)的大小,與默認文本大小相關。

B  坐標軸和標記
很多R的高級圖形都有坐標軸,你可以使用低級圖形函數(shù)axis()自己創(chuàng)建坐標軸。坐標軸包含三個主要組件:軸線axis line(線條類型由參數(shù)lty控制),標記tick mark(沿著軸線劃分單元),標號tick label(用來標出這些單元)。這些組件可以用下面這些參數(shù)定制。
lab=c(5,7,12)前兩個數(shù)字分別是x和y軸上所要劃分的區(qū)間數(shù)。第三個數(shù)字是坐標軸標簽的長度,用字符數(shù)來衡量(包括小數(shù)點)。參數(shù)的值如果選得太小可能導致所有標號都聚在一起。
las=1 坐標軸標簽的方向。0代表總是和坐標軸平行,1代表總是水平的,2代表總是垂直于坐標軸。
mgp=c(3,1,0)坐標軸組件的位置。第一個組件是坐標軸標簽到坐標軸的距離,單位是文本行(text lines)。第二個組件是到標號的距離,最后一個是軸的巍直到軸線的距離(一般都是0)。正數(shù)代表繪圖區(qū)域外,負數(shù)代表區(qū)域內。
tck=0.01 標號的長度,繪圖區(qū)域大小的一個分數(shù)作單位。當tck比較小時(小于0.5),就強制x和y軸上的標記為相同大小。tck=1就是生成網格線。取負值時標記畫向繪圖區(qū)域外。內部標記可以使用tck=0.01和mgp=c(1,-1.5,0)。
xaxs="s"   yaxs="d" 分別是x、y軸的類型。如果是s(standard)或e(extended)類型,那最大和最小的標記都始終在數(shù)據區(qū)域之外。如果有某個點離邊界非常近,那么擴展型(extended)的軸會稍稍擴展一下。這種類型的軸有時會在邊界附近留出大片空白。而i(internal)或r(默認值)類型的軸,標記始終在數(shù)據區(qū)域內,不過r類型會在邊界留出少量空白。
如果這個參數(shù)設為d,就鎖定當前軸,對之后繪制的所有圖形都用這個軸(直到參數(shù)被重新設定為其他的那幾個值)。這個參數(shù)適用于生成一系列固定尺度的圖。

C  圖邊緣(Figure margins)
在R中一個單獨圖形,圖(figure),包含一個繪圖區(qū)(plot region),以及環(huán)繞著這個區(qū)域的邊緣(其中可能含有坐標軸標簽、標題等等),(通常)這兩部分以軸為邊界。
一個典型的圖是

控制圖的樣式的圖形參數(shù)包括:
mai=c(1,0.5,0.5,0)分別是底部,左側,頂部,右側的寬度,單位是英寸。
mar=c(4,2,2,1)與mai相似,只是單位是文本行(text lines)。
由于更改一個就會改變另一個的值,所以在這個意義上,mai和mar是等價的。這個參數(shù)的默認值通常都太大了;右側邊緣很少用到,如果沒標題,頂部邊緣也不需要,左側和底部的邊緣應當足夠大,以容納坐標軸和標號。此外,默認值并沒有考慮到設備表面的大?。罕热?,使用postscript()驅動,height=4參數(shù)時,除非用mar,mai另外設定,否則圖的邊緣就要占上大約50%。使用多圖環(huán)境時(后面會提到)。邊緣會減少一半,不過這在多圖共用一頁的時候可能還不夠。

D 多圖環(huán)境
R允許在一頁上創(chuàng)建一個n£m的圖的陣列。每個圖由自己的邊緣,圖的陣列還有一個可選的外部邊緣,如下圖所示。

與多圖環(huán)境相關的圖形參數(shù)有:
mfcol=c(3, 2)    mfrow=c(2, 4)
   設定多圖陣列的大小。第一個值是行數(shù),第二個值是列數(shù)。這兩個參數(shù)唯一的區(qū)別是mfcol把圖按列排入,mfrow把圖按行排入。上圖所示的版式可用mfrow=c(3,2)創(chuàng)建;上圖顯示的是繪制四幅圖后的情況。
mfg=c(2, 2, 3, 2)
    當前圖在多圖環(huán)境下的位置。前兩個數(shù)字是當前圖的行、列數(shù);后兩個是其在多圖陣列中的行列數(shù)。這個參數(shù)用來在多圖陣列中跳轉。你甚至可以在后兩個數(shù)中使用和真值(true value)不同的值,在同一頁上得到大小不同的圖。
fig=c(4, 9, 1, 4)/10
    當前圖在頁面的位置,取值分別是左下角到左邊界,右邊界,下、上邊界的距離與對應邊的百分比數(shù)。給出的例子是一個頁面右下角的圖。這個參數(shù)可以設定圖在頁面的絕對位置。
oma=c(2, 0, 3, 0)   omi=(0, 0, 0.8, 0)  
       外部邊緣的大小。與mar和mai相似,第一個用文本行作單位,第二個以英寸作單位,從下方開始按照順時針順序指定。
外部邊緣對頁標題這類東西很有用。文本可以通過帶outer=TRUE參數(shù)的mtext()函數(shù)加入外部邊緣。默認情況下是沒有外部邊緣的因此必須通過oma或omi指定。
函數(shù)split.screen()和layout()可以對多個圖形作更復雜的排列。

12.6 設備驅動

R幾乎可以在任何一種類型的顯示器和打印設備上生成(不同質量的)圖形。不過,在這之前,需要告訴R要處理的是哪一種設備。這通過啟動一個設備驅動來完成。
設備驅動通過調用設備驅動函數(shù)來啟動。
某些常用的設備驅動有:
X11()[Unix] 使用X11視窗系統(tǒng)
windows()[Windows]   使用 Windows 視窗系統(tǒng) 
postscript()在PostScript打印機上打印或者創(chuàng)建PostScript圖形文件
pictex()生成一個LATEX文件
當一個設備使用完之后,可以通過下面的命令終止設備驅動
> dev.off()
這個命令可以確保設備已經結束;例如,在某些硬拷貝的設備中,這個命令可以保證每頁都已經完成,并且都被傳送到打印機了。

PostScript文檔
通過給postscript()函數(shù)帶上file參數(shù),我們可以把圖形以PostScript格式存儲到文件中。如果沒有給出horizontal=FALSE參數(shù),圖形是橫向的,你可以通過width和height參數(shù)控制圖形的大?。▓D形會自動適應)。例如,命令
> postscript("file.ps", horizontal=FALSE, height=5, pointsize=10)
為一個五英寸的圖生成一個包含PostScript代碼的文件,可以放在文當中。如果命令中的指定的文件名已經存在,將會被覆蓋。

多重圖形設備
每個對設備驅動的新調用都會打開一個新的圖形設備,在設備列表中加入新的一項。這個設備就成為當前設備,圖形輸出就傳送到這個設備。
dev.list()      返回所有活動中設備的序號和名稱。在列表位置1的設備始終是空設備(null device),這個設備不接收任何圖形命令。
dev.next()    dev.prev()     分別返回當前設備的后一個和前一個設備的序號和名稱。
dev.set(which=k)     用來把當前設備更改為設備列表中位置k的那個。返回設備的序號和標簽。
dev.off(k)    終止圖形列表位置k的那個圖形設備。對于某些設備,比如postscript,這個命令會立刻打印文件或者正常結束文件,具體怎樣處理取決于設備是怎樣初始化的。
dev.copy(device,. . . ,which=k)      dev.print(device,. . . ,which=k)
建立一個設備k的拷貝。其中device是一個設備函數(shù),例如postscript,如果需要的話可以在'. . . '中指定其它的參數(shù),dev.print效果相似,不過復制的設備會立刻關閉,所以打印硬拷貝這樣的終止操作也會被立即執(zhí)行。
graphics.off()      終止列表中的所有圖形設備,空設備除外。


數(shù)據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }