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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

用g.raphael.js高速绘制饼图、柱状图、点状图、折线图(下)

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用g.raphael.js高速绘制饼图、柱状图、点状图、折线图(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,這里有個g.raphael.js的范例文章,可以直接看,我就不轉載了:

http://www.cnblogs.com/lhb25/archive/2013/01/09/gRaphael-javascript-chart-library.html


好了,接下來我們來試試創建柱狀圖:

<script type="text/javascript" src="raphael.js"></script>
<script type="text/javascript" src="g.raphael-min.js"></script>
<script type="text/javascript" src="g.bar-min.js"></script>

首先導入我們上一篇里面講到的幾個js,記得要按照上面從上到下的順序導入,因為g.raphael是基于raphael的,只有raphael.js先加載完畢之后,它才能夠順利正常加載,同理,g.bar、g.pie、g.dot、g.line這四個則是基于g.raphael的,它們必須在graphael加載完畢之后才可以正常加載。


接著我們需要在html里面隨便插入一個帶有id的div。

<body> ?
??? <div id="x"></div> ?
? </body>
然后就可以來寫script了。

<html> <head> <title>范例</title> </head> <body> <div id="x"></div> </body> <script type="text/javascript" src="raphael.js"></script> <script type="text/javascript" src="g.raphael-min.js"></script> <script type="text/javascript" src="g.bar-min.js"></script> <script type="text/javascript"> var paper = Raphael("x",650,400);paper.barchart(0,0,200,300,[30,20,10],{type:"round"}); </script> </html> 繪制之后的樣子:

接下來簡單講解一下柱狀圖

var paper = Raphael("x",650,400);這一句是創建raphael畫布,創建位置是我們的id “x”,也就是生成于div中。寬度是650,高度是400。

下面的bar.chart的參數如下:

Paper.barchart(x,y,width,height,values,opts);

x、y就不用說了,圖的起點左上角坐標,width和height也不用說了,寬度和高度,values說一下,是數組,而且必須是數值組成的數組,不可以使用字符串之類的非數值,不然會報錯,上面我隨便寫的是30、20和10三個值,用戶可以隨便寫。最有看頭的是最后面花括號里的一些option。這個是對圖的一些屬性擴展。

對于柱狀圖,有以下屬性:

type,必須用字符串,比如我上面的”round“,畫出來就是圓角的柱狀圖。默認是square,還有sharp、soft

gutter,默認”20%“,表示各個條圖之間的間距。該值放大之后,條形圖也會相應縮小。

vgutter,表示縱向間距,但對于柱狀圖來說沒什么用。(如果用到了官網介紹的橫向柱狀圖,那么該值當然就是有用的。)

colors,這個很重要,也用數組,決定每一個柱狀圖的顏色。如:colors:["red","green","blue"],

stackedtostretch,真或假,官方說可以在圖上顯示字體,但實測無效。。。汗。。

好了,柱狀圖就介紹到這里,接下來介紹的是一個叫做Paper.blob的屬性,其實就是在你的圖上面加一個注釋。

比如:

paper.blob(50, 50, "$9.99", 60);

第一和第二個參數是x和y,就不解釋了。第三個帶引號的參數是你的注釋內容。最后一個是旋轉角,用文字不方便說明,我用兩張圖來給大家看一下就明白了:

這一張圖的角度是60度。它的角度計算方法是以y軸為起點逆時針的計算。

這一張圖是120度,看出來了吧,其實就是注釋塊的圓塊在旋轉。不過可惜的是注釋塊不能改顏色……


接下來是點狀圖,這個用的并不多:

先看看例子:

var paper = Raphael("x",650,500); paper.dotchart(0, 0, 620, 500, [76, 70, 67, 71, 69], [2, 1, 2, 3, 4], [100, 120, 140, 160, 500], {max: 20, axisylabels: ['Mexico', 'Argentina', 'Cuba', 'Canada', 'United States of America'], heat: true, axis: '0 0 1 1'})


前四個參數和柱狀圖一樣,就不說了。第五和第六個參數表示數值的xy值的大小。后面是size,表示圓圈的大小,該值與屬性里面的max成對應的關系。什么意思呢?這個要從max值說起,首先max值是指原的直徑,默認是100,在這里改成了10,單位是毫米。在上面的圓圈中,我們設定的大小是[100, 120, 140, 160, 500],那么最大的500就會變成10的尺寸,其余的根據其與500的比例進行相應的縮小(如圖)。

接下來我們來看看它的一些屬性,首先是max,這個已經講了。

然后是symbol,也就是每一個小圖形的形狀,作者說目前只有circle一個值,也就是圓圈。

接著是gutter,和上面的柱狀圖一樣,表示兩個symbol之間的間距。

然后是heat,這是個布爾值,默認false,為真的情況下,圓圈越大,顏色越暖(紅到綠,如圖),如果為假則默認所有圓圈都是藍色。

opacity,不透明度,默認為1。使用這個屬性之后,越小的圓圈會越透明。

href,數組,看名字就知道是配合點擊事件進行跳轉用的鏈接。

axis,表示軸,我們例子中是”0,0,1,1“分別對應頂部軸、右邊軸、底部軸和左邊軸。0表示空,1表示渲染出該軸線。

axisxstep,step表示格子,假設我們設置axisxstep:3,那么底部就只剩下三格,其余的均被省略。該值可用于簡化x軸或y軸上面的錨點數量。如果一個軸上面有三個格子,那么出去頭尾之后,中間有兩個錨點。該值對應頂部軸和底部軸。

axisystep,這個和上面的一樣,對應的是y軸,也就是左邊軸或右邊軸。

axisxlabels,數組,在對應的錨點位置想要顯示什么字符串,一般來說是和上面的值axisxstep配合使用的。如果沒有限定axisxstep的話,那么axisxlabels就會從頭開始替換掉對應的錨點上的字符內容,但后續的錨點字符依然是默認的數字。

axisylabels,數組,和上面的類比就懂了。

axisxtype,有‘t’、‘,’、‘-’、‘+’、‘|’等值,作用不明……

axisytype,類比上面的那個,作用依然不明,貌似是在默認的值前面加個符號什么的……總之是一個用不著的蛋疼屬性。

點狀圖的數據相對來說比較復雜,而且繪制速度相對較慢,不推薦使用。

接下來我們來看看Paper.drop。和上面的Paper.blob是大同小異的東西,只是形狀不一樣,就不用再重復介紹了。

var paper = Raphael("x",650,500); paper.dotchart(0, 0, 620, 500, [76, 70, 67, 71, 69], [2, 1, 2, 3, 4], [100, 120, 140, 160, 500], {max: 20, axisylabels: ['Mexico', 'Argentina', 'Cuba', 'Canada', 'United States of America'], heat: false, axis: '1 0 1 1', axisxstep: 3,axisytype:'t'}) paper.drop(200, 250, "$9.99", 60);

接下來在看看Paper.flagPaper.label,后者沒有angle參數,其他的都和上面的一樣。就不再贅述。下面給出圖片。

paper.drop(200, 250, "$9.99", 60); paper.flag(250, 250, "$9.99", 60); paper.label(300, 250, "$9.99");

接下來我們來看看折線圖

var paper = Raphael("x",650,500); paper.linechart(0, 0, 300, 200, [1,2,3,4,5], [[1,2,3,4,5], [1,3,9,16,25], [100,50,25,12,6]], {smooth: false, colors: ['red', 'blue', 'green'], symbol: 'circle'});

首先x、y、width、height參數就不用介紹了,接著valuesx和valuesy和上面的點狀圖是一樣的,不同的是多個折線圖一般情況下是共用一個valuesx的,這一點需要注意。

接下來我們來看看折線圖有哪些屬性:

gutter,和上面一樣,表示symbols之間的距離。

symbol,哎,作者沒給出什么好的,只有circle圓圈和 ‘ ’,‘ ’表示什么都木有。

width,就是symbol的大小,數值越大,symbols的圓圈的大小就越大,沒多大用。

colors,最重要的一個參數,不解釋了。

shade,布爾值,默認false,設置為true的時候就會產生陰影,至于陰影到底是怎樣,直接來個圖好說明一些:

nostroke,stroke表示連線的意思,顧名思義,nostroke就是沒有連線。該值是布爾值,默認情況下是false,如果改為true的話,那上面圓圈之間的連線就會消失。特別注意:在沒有連線的情況下,如果依然使用了陰影屬性,那么陰影就不會有半透明的效果了,會變成和你設置的顏色一樣的顏色(那叫一個丑啊……)

dash,字符串,官方說該值可以改變symbols之間的連線方式,默認continues也就是正常連線,可以改成dashed也就是條狀虛線,還有dotted也就是點狀虛線,但是親測無效,不知道是不是被作者給坑了啊……

smooth,柔和過渡,該值為布爾值。如果為true的話,那么兩點之間的連線就不是直線,而成了曲線。如果是false就是直線。

axis,這個是軸,上面已經講過了,就不用說了吧。

axisxstep和axisystep,上面都講過了,不說了。

接下來我們來看看餅圖了。

var r = Raphael(10, 50, 640, 480); r.piechart(320, 240, 100, [55, 20,11],{init:true, stroke:"#fff",colors:["red","#654321","pink"],legend:["紅色","棕色","粉色"],lengendmark:"text"})

餅圖的四個參數,分別是cx,cy,r,values,values就不用說明了。cx和cy表示圓心的x坐標和y坐標,而r是半徑。

接下來看看相關的一些屬性:

minPercent,默認值為1,當你的某一片最小的內容小于該值時就會濃縮在一大片里面,變成一個others。(直接看圖吧,我設置了minPercent:60)

maxSlices,表示你想要畫出的扇形片的最大數量,舉個例子,你有十個數據,但是你設置了maxSlices等于3,那么只有最大的三個數據會被渲染成三片,其他的都被合成了一個大大的others,明白了吧?

stroke,表示所有扇形的邊框的顏色,記住是所有,而不是單獨的某一個。

strokewidth,扇形邊框線的寬度。

init,布爾值,默認是false,如果設置為true的話就會開啟動畫效果,在載入餅圖時,會看到餅圖從半徑為零慢慢變大,直到增大至最大半徑。

colors,數組,不解釋了。

href,跳轉鏈接的數組,不解釋了。

legend,數組,表示注釋文字,可以參考我上面的例子。

legendcolor,注釋文字的顏色,默認是黑色的。

legendothers,字符串,當出現others時可以改成其他的文字,比如我們可以改成中文的"其他"。

legendmark,字符串,修改注釋文字前面的小圖形的形狀,默認是圓形,而且也只有圓形。。。你改了其他也不會有效果的。。

legendpos,注釋文字的位置,默認是”east“,還可以是”west“、”south“和”north但只能確定布局的位置,不能調節具體的距離。。

接下來再介紹一個Paper.popup

非常簡單,共有五個參數,前面三個分別是x、y和文字內容,第四個是direction,即方向,可以是left、right、down和up中的一個。size表示padding值,默認是5。

示例:

paper.popup(50,50,'$9.99','down');

如圖,不用再做其他說明了吧?


g.raphael就介紹到這里了。官網還有一部分關于動作的api,以及一些橫向的圖我沒有列舉出來。(比如橫向的柱狀圖)并不是很復雜,大家可以自己去官網查看api研究研究一下即可。時間關系,g.raphael的內容就研究到這里啦。

官網api:http://g.raphaeljs.com/reference.html

總結

以上是生活随笔為你收集整理的用g.raphael.js高速绘制饼图、柱状图、点状图、折线图(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

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