圓餅圖,用Yahoo畫圖表教學之一
Yahoo開發者社群(YDN)有不少開放工具及專案計畫,而其中的Yahoo使用者介面函式庫(YUI Library),是以javascript撰寫,提供眾多與使用者互動所需的功能函式。來看看這個我最喜歡的項目,圖表Chart。
先實作一個圓餅圖如下(滑鼠移至圖表會顯示數據):
Unable to load Flash content. The YUI Charts Control requires Flash Player 9.0.45 or higher. You can install the latest version at the Adobe Flash Player Download Center.
原始碼及註解:
<!-- 匯入yui chart起始js檔(從範例檔取出,和官方建議有異) -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/yuiloader/yuiloader-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/dom/dom-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/event/event-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/json/json-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/element/element-beta-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/datasource/datasource-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/charts/charts-experimental-min.js"></script>
<!-- 圓餅圖位置 -->
<div id="chart" style="height:300px;width:420px">Unable to load Flash content. The YUI Charts Control requires Flash Player 9.0.45 or higher. You can install the latest version at the <a href="http://www.adobe.com/go/getflashplayer">Adobe Flash Player Download Center</a>.</div>
<!-- 建立資料來源及其它設定值 -->
<script type="text/javascript">
//--- 載入圖表flash檔
YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.6.0/build//charts/assets/charts.swf";
//--- 資料來源YAHOO.example.publicOpinion,可自行新增修改刪除內容
YAHOO.example.publicOpinion =
[
{ response: "hello", count: 271214 },
{ response: "hello2", count: 271214 },
{ response: "hello3", count: 271214 },
{ response: "hello4", count: 271214 },
{ response: "hello5", count: 271214 },
{ response: "測試啦!", count: 81845 }
]
var opinionData = new YAHOO.util.DataSource( YAHOO.example.publicOpinion );
opinionData.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
opinionData.responseSchema = { fields: [ "response", "count" ] };
//--- 圓餅圖
var mychart = new YAHOO.widget.PieChart( "chart", opinionData,
{
dataField: "count",
categoryField: "response",
style:
{
padding: 20,
legend:
{
display: "right",
padding: 10,
spacing: 5,
font:
{
family: "Arial",
size: 13
}
}
},
//用於 flash player express install(為使用者升級flash)
expressInstall: "http://developer.yahoo.com/yui/examples/charts/assets/expressinstall.swf"
});
</script>
註1:更多內容(長條圖、趨勢圖、比較圖等)可瀏覽官方網站的Charts [experimental](它標註為實驗版,應仍在開發中,相信未來還會有新增功能)
註2:官方網站所述起始匯入的js檔無法作用:
<!-- Dependencies --> <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/yahoo-dom-event/yahoo-dom-event.js"></script> <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/element/element-beta-min.js"></script> <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/datasource/datasource-beta-min.js"></script> <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/json/json-min.js"></script> <!-- OPTIONAL: Connection (enables XHR) --> <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/connection/connection-min.js"></script> <!-- Source files --> <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/charts/charts-experimental-min.js"></script>
註3:推薦另外一個線上畫圓餅圖的工具HeartRails Graph
註4:Flash Player Express Install詳細說明
註5:過幾天再寫個可自訂輸入資料源的表單程式來玩