下载OFC2,解压后会发现里面有很多文件夹和文件,这里面有多种语言的示例,我们也可以读一下来了解OFC的基本使用方法。要使用OFC我们需要拷几个文件到项目中:
open-flash-chart.swf
swfobject.js
swfobject.embedSWF( "open-flash-chart.swf", "my_chart", "600", "350", "9.0.0", "expressInstall.swf", {"data-file":"data.php","loading":"正在加载数据,请稍候..."});参数分别是 swf 文件的路径,图表容器的id,长、宽,data-file为提供数据的文件的路径,;loading用于自定义等待图表加载时的显示文字
include 'php-ofc-library/open-flash-chart.php'; $title = new title( "广告点击" ); $title->set_style( "{font-size: 20px; font-weight: bold; color: #172229; text-align: center;}" ); $vals = array(); $x_labels = array(); $x_labels[] = '海尔'; $vals[] = 500; $x_labels[] = '360buy'; $vals[] = 350; $x_labels[] = '卓越'; $vals[] = 400; $x_labels[] = 'baidu'; $vals[] = 700; $x_labels[] = 'google'; $vals[] = 200; $d = new hollow_dot(); $d->size(4)->halo_size(0)->colour('#3D5C56'); $line = new line(); $line->set_default_dot_style($d); $line->set_colour('#3D5C56'); $line->set_values( $vals ); $line->attach_to_right_y_axis(); $chart = new open_flash_chart(); $chart->set_title( $title ); $chart->add_element( $line ); $y_legend = new y_legend( '活动计划' ); $y_legend->set_style( '{font-size: 22px; color: #778877}' ); $chart->set_y_legend( $y_legend ); $bar = new bar_filled( '#E2D66A', '#577261' ); $bar->set_values( array(200,500,800,450,650) ); $bar->attach_to_right_y_axis(); $chart->add_element( $bar ); $bar1 = new bar_filled( '#BF3B69', '#577261' ); $bar1->set_values( array(230,580,800,230,150) ); $bar1->attach_to_right_y_axis(); $chart->add_element( $bar1 ); // create a Y Axis object // $y = new y_axis_right(); // these number crash the chart :-( //$y->set_range( 35000000, 52000000, 1000000 ); $y->set_range( 0, 2000, 1 ); $y->set_stroke( 3 ); $y->set_colour( '#3D5C56' ); $y->set_tick_length( 12 ); $y->set_steps( 200 ); //$y->set_labels( array('Zero','One','Two','Three','Four','Five','Six','Seven','Eight') ); // // Add the Y Axis object to the chart: // $chart->set_y_axis_right( $y ); // $x = new x_axis(); $x->set_labels_from_array($x_labels); $chart->set_x_axis( $x ); echo $chart->toPrettyString();放在服务器上运行,就可以生成图表:
{ /* 图表标题 */ "title" : { "text" : "Many data lines", /* 标题文本 */ "style" : "{font-size: 30px;}" /* CSS样式 */ }, "is_decimal_separator_comma": 0, /* (0/1),是否用逗号替换小数点 */ "is_fixed_num_decimals_forced": 1, /* (0/1),是否强制小数点后面的位数 */ "num_decimals":3, /* 精度,即小数点后面的位数,需要配合上面参数一起使用 */ "is_thousand_separator_disabled": 0, /* (0/1),是否使用千位分隔符 */ /* X轴标题(X轴下方) */ "x_legend" : { "text" : "x_legend", /* 标题文本 */ "style" : "{font-size: 12px; color:#736AFF;}" /* CSS样式 */ }, /* Y轴标题(Y轴左方) */ "y_legend" : { "text" : "y_legend", /* 标题文本 */ "style" : "{font-size: 12px; color:#2F55FF;}" /* CSS样式 */ }, /* 右Y轴标题(Y轴右方) */ "y2_legend" : { "text" : "右Y轴", /* 标题文本 */ "style" : "{font-size: 12px; color:#2F55FF;}" /* CSS样式 */ }, /* X轴 */ "x_axis" : { "stroke" : 2, /* X轴的粗细 */ "tick-height" : 15, /* X轴刻度的长度 */ "colour" : "#df0fd0", /* 颜色 */ "grid-colour": "#00ff00",/* 网格线的颜色 */ "offset" : 1,/* (0/1), 是否根据数据图形和标签的宽度进行延展 */ "3d" : 0, /* 显示3D */ "steps" : 0.5, /* 刻度间隔 */ "min":0, "max":8, "labels": { "rotate": "vertical", /* 垂直方向显示标签 */ "size":13, /* 字体大小 */ "steps": 2, /* 整数,标签间隔 */ "visible-steps": 3, /* 可见标签间隔,会覆盖上面参数 */ "align":"center", /* 旋转的标签居中对齐,默认是较高的一端对其到刻度上 */ "labels": [ "January", {"text":"February", "visible":true, "colour":"ff0000", "rotate":-60}, "March", {"text":"April","colour":"#00D000"}, "May","June","July","August","September" ] } }, /* Y轴 */ "y_axis":{ "stroke": 4, "tick-length": 3, "colour": "#d000d0", "grid-colour": "#00ff00", "offset": 0, "max": 20 }, /* 右Y轴 */ "y_axis_right": { "stroke": 4, "tick-length": 3, "colour": "#d000d0", "grid-colour": "#00ff00", "offset": 0, "max": 20 }, /* 数据元素 */ "elements": [ { "type": "bar", /* 关于柱图类型参考“bar-all-onlick.json” (从官网下载ofc2完整包的话可以找到这个文件)*/ "alpha": 0.5, "colour": "#9933CC", "text": "Page views", "font-size": 10, "on-show": { /* 展现样式 */ "type": "pop", /* 弹出方式, 此外还有 drop 和 grow-up */ "cascade":1, /* 不通柱子之间的间隔时间为 1 */ "delay":0.5 /* 延迟时间 */ }, "values" : [9,6,7,9,5, {"top":7,"bottom":2,"colour":"#A03030","tip":"#top#<br>hello/n#val#","on-click":"#"}, 6,null,7 ] }, { "type": "line", /* 展示类型 —— 折线图 */ "colour": "#9933CC", /* 线条颜色 */ "width": 2, /* 线条粗细 */ "text": "Page views", /* 数据标题(Y轴上方) */ "font-size": 10, /* 数据标题字体大小 */ "dot-size": 6, "values" : [15,18,19,14,17,18,15,18,17] } ], /* 鼠标提示信息 */ "tooltip": { "shadow":true, /* 提示框影子 */ "mouse":2, /* 1 - 滑动样式,2 - 非滑动样式,折线图不支持*/ "stroke":5, /* 边框粗细 */ "rounded": 12, /* 边角圆滑程度 */ "colour":"#00d000", /* 边框颜色 */ "background":"#d0d0ff", /* 背景颜色 */ "title":"{font-size: 14px; color: #905050;}", /* 标题样式 */ "body":"{font-size: 10px; font-weight: bold; color: #9090ff;}" /* 本体样式 */ } }
Array ( /* 图表标题 */ [title] => Array ( [text] => Many data lines /* 标题文本 */ [style] => {font-size: 30px;} /* CSS样式 */ ) [is_decimal_separator_comma] => 0 /* (0/1),是否用逗号替换小数点 */ [is_fixed_num_decimals_forced] => 1 /* (0/1),是否强制小数点后面的位数 */ [num_decimals] => 3 /* 精度,即小数点后面的位数,需要配合上面参数一起使用 */ [is_thousand_separator_disabled] => 0 /* (0/1),是否使用千位分隔符 */ /* X轴标题(X轴下方) */ [x_legend] => Array ( [text] => x_legend /* 标题文本 */ [style] => {font-size: 12px; color:#736AFF;} /* CSS样式 */ ) /* Y轴标题(Y轴左方) */ [y_legend] => Array ( [text] => y_legend [style] => {font-size: 12px; color:#2F55FF;} ) /* 右Y轴标题(右Y轴右方) */ [y2_legend] => Array ( [text] => y_legend [style] => {font-size: 12px; color:#2F55FF;} ) /* X轴 */ [x_axis] => Array ( [stroke] => 2 /* X轴的粗细 */ [tick-height] => 15 /* X轴刻度的长度 */ [colour] => #df0fd0 /* 颜色 */ [grid-colour] => #00ff00 /* 网格线的颜色 */ [offset] => 1 /* (0/1), 是否根据数据图形和标签的宽度进行延展 */ [3d] => 0 /* 显示3D */ [steps] => 0.5 /* 刻度间隔 */ [min] => 0 [max] => 8 [labels] => Array ( [rotate] => vertical /* 垂直方向显示标签 */ [size] => 13 /* 字体大小 */ [steps] => 2 /* 整数,标签间隔 */ [visible-steps] => 3 /* 可见标签间隔,会覆盖上面参数 */ [align] => center /* 旋转的标签居中对齐,默认是较高的一端对其到刻度上 */ [labels] => Array ( [0] => January [1] => Array ( [text] => February [visible] => 1 [colour] => ff0000 [rotate] => -60 ) [2] => March [3] => Array ( [text] => April [colour] => #00D000 ) [4] => May [5] => June [6] => July [7] => August [8] => September ) ) ) /* Y轴 */ [y_axis] => Array ( [stroke] => 4 [tick-length] => 3 [colour] => #d000d0 [grid-colour] => #00ff00 [offset] => 0 [max] => 20 ) /* 右Y轴 */ [y_axis_right] => Array ( [stroke] => 4 [tick-length] => 3 [colour] => #d000d0 [grid-colour] => #00ff00 [offset] => 0 [max] => 20 ) /* 数据元素 */ [elements] => Array ( [0] => Array ( [type] => bar /* 关于柱图类型参考“bar-all-onlick.json” (从官网下载ofc2完整包的话可以找到这个文件)*/ [alpha] => 0.5 //透明度 [colour] => #9933CC [text] => Page views [font-size] => 10 [on-show] => Array ( [type] => pop /* 展现样式 */ [cascade] => 1 /* 弹出方式, 此外还有 drop 和 grow-up */ [delay] => 0.5 /* 延迟时间 */ ) [values] => Array ( [0] => 9 [1] => 6 [2] => 7 [3] => 9 [4] => 5 [5] => Array ( [top] => 7 [bottom] => 2 [colour] => #A03030 [tip] => #top#<br>hello/n#val# [on-click] => # ) [6] => 6 [7] => [8] => 7 ) ) [1] => Array ( [type] => line /* 展示类型 —— 折线图 */ [colour] => #9933CC [width] => 2 [text] => Page views /* 数据标题(Y轴上方) */ [font-size] => 10 /* 数据标题字体大小 */ [dot-size] => 6 [values] => Array ( [0] => 15 [1] => 18 [2] => 19 [3] => 14 [4] => 17 [5] => 18 [6] => 15 [7] => 18 [8] => 17 ) ) ) /* 鼠标提示信息 */ [tooltip] => Array ( [shadow] => 1 /* 提示框影子 */ [mouse] => 2 /* 1 - 滑动样式,2 - 非滑动样式,折线图不支持*/ [stroke] => 5 /* 边框粗细 */ [rounded] => 12 /* 边角圆滑程度 */ [colour] => #00d000 /* 边框颜色 */ [background] => #d0d0ff /* 背景颜色 */ [title] => {font-size: 14px; color: #905050;} /* 标题样式 */ [body] => {font-size: 10px; font-weight: bold; color: #9090ff;} /* 本体样式 */ ) )
<html> <head> <script type="text/javascript" src="../js/json/json2.js"></script> <script type="text/javascript" src="js/swfobject.js"></script> <script type="text/javascript"> swfobject.embedSWF("open-flash-chart.swf", "my_chart", "350", "200", "9.0.0"); </script> <script type="text/javascript">
//当拿到数据后程序调用的方法 function ofc_ready() { alert('ofc_ready'); }
//程序自动调用,方法名不能改变,获取图表数据 function open_flash_chart_data() { alert( 'reading data' ); return JSON.stringify(data); } function findSWF(movieName) { if (navigator.appName.indexOf("Microsoft")!= -1) { return window[movieName]; } else { return document[movieName]; } } var data = “我们准备的json数据”; </script> </head> <body> <p>Hello World</p> <div id="my_chart"></div> </body> </html>在页面上多个图表,根据用户选择,显示相应图表
<html> <head> <script type="text/javascript" src="js/json/json2.js"></script> <script type="text/javascript" src="js/swfobject.js"></script> <script type="text/javascript"> swfobject.embedSWF("open-flash-chart.swf", "my_chart", "350", "200", "9.0.0"); </script> <script type="text/javascript"> function ofc_ready() { alert('ofc_ready'); } function open_flash_chart_data() { alert( 'reading data' ); return JSON.stringify(data_1); } function load_1() { tmp = findSWF("my_chart"); x = tmp.load( JSON.stringify(data_1) ); } function load_2() { alert("loading data_2"); tmp = findSWF("my_chart"); x = tmp.load( JSON.stringify(data_2) ); } function findSWF(movieName) { if (navigator.appName.indexOf("Microsoft")!= -1) { return window[movieName]; } else { return document[movieName]; } } var data_1 = <?php echo $chart_1->toPrettyString(); ?>; var data_2 = <?php echo $chart_2->toPrettyString(); ?>; </script> </head> <body> <p>Open Flash Chart</p> <div id="my_chart"></div> <br> <a href="javascript:load_1()">display data_1</a> || <a href="javascript:load_2()">display data_2</a> <p> Don't forget to 'view source' to see how the Javascript JSON data is loaded. </p> </body> </html>