打開highcharts.src.js,找到enabled: true, text: 'Highcharts.com',href: '',自己去掉text和href的內(nèi)容,如果不想改源文件就在js里添加屬性credits: { enabled: false }
我們一直強調(diào)網(wǎng)站建設(shè)、成都做網(wǎng)站對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)絡(luò)公司不一定是大公司,創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。
力學(xué)圖( Force ),也有被翻譯做力導(dǎo)向圖等。這種圖很有意思,先從初始數(shù)據(jù)開始,看下面代碼:
var nodes = [ { name: "GuiLin" },
{ name: "GuangZhou" },
{ name: "XiaMen" },
{ name: "HangZhou" },
{ name: "ShangHai" },
{ name: "QingDao" },
{ name: "TianJin" },
{ name: "BeiJing" },
{ name: "ChangChun" },
{ name: "XiAn" },
{ name: "WuluMuQi" },
{ name: "LaSa" },
{ name: "ChengDu" } ];
var edges = [ { source : 0 , target: 1 } ,
{ source : 1 , target: 2 } ,
{ source : 2 , target: 3 } ,
{ source : 3 , target: 4 } ,
{ source : 4 , target: 5 } ,
{ source : 5 , target: 6 } ,
{ source : 6 , target: 7 } ,
{ source : 7 , target: 8 } ,
{ source : 8 , target: 9 } ,
{ source : 9 , target: 10 } ,
{ source : 10 , target: 11 } ,
{ source : 11 , target: 12 } ,
{ source : 12 , target: 0 } ];
這里有頂點( nodes )和邊( edges ),這里的頂點是一些城市名稱,邊是兩個頂點之間的連線。我們現(xiàn)在要用這些數(shù)據(jù)來做力學(xué)圖。但是這樣的數(shù)據(jù)不適合做力學(xué)圖,比如不知道每一個頂點畫在哪個坐標(biāo)等。所以需要先用 Layout 來轉(zhuǎn)換數(shù)據(jù),我們說過, D3 中的 Layout 就是用來轉(zhuǎn)換數(shù)據(jù)的。 force 的 layout 為:
var force = d3.layout.force()
.nodes(nodes)
.links(edges)
.size([width,height])
.linkDistance(200)
.charge([-100])
.start();
在上面的代碼中:
d3.layout.force() 是力學(xué)圖 Layout 的函數(shù)
nodes() 里傳入頂點的數(shù)組
links() 里放入邊的數(shù)組
size() 是作用域的大小
linkDistance() 用于設(shè)定兩個頂點之間的長度
charge() 是設(shè)定彈力的大小。
start() 表示開始轉(zhuǎn)換
調(diào)用這個函數(shù)后,數(shù)據(jù)就已經(jīng)被轉(zhuǎn)換了,我們看看數(shù)據(jù)從什么轉(zhuǎn)換成什么了:
頂點(轉(zhuǎn)換前):
頂點(轉(zhuǎn)換后):
可以看到,轉(zhuǎn)換后,多了 index , px , py 等。
再來看看邊的數(shù)據(jù):
邊(轉(zhuǎn)換前):
邊(轉(zhuǎn)換后):
可以看到,邊數(shù)據(jù)的兩個索引號直接被轉(zhuǎn)換成了兩個頂點的數(shù)據(jù)。
好了,有了這些數(shù)據(jù),我們就可以作圖了。我們用 SVG 中的 line 畫邊,用 SVG 中的 circle 畫頂點。
var svg_edges = svg.selectAll("line")
.data(edges)
.enter()
.append("line")
.style("stroke","#ccc")
.style("stroke-width",1);
var color = d3.scale.category20();
var svg_nodes = svg.selectAll("circle")
.data(nodes)
.enter()
.append("circle")
.attr("r",10)
.style("fill",function(d,i){
return color(i);
})
.call(force.drag);
這樣的代碼我們已經(jīng)很熟悉了,只有最后一句代碼沒出現(xiàn)過, call( force.drag ) 是設(shè)定我們可以拖動頂點。這個 call 函數(shù)我們前面說過,這個 call 是用于將當(dāng)前選擇的元素傳到 force.drag 函數(shù)中。
最后,我們還需要一段代碼,如下:
force.on("tick", function(){
svg_edges.attr("x1",function(d){ return d.source.x; });
svg_edges.attr("y1",function(d){ return d.source.y; });
svg_edges.attr("x2",function(d){ return d.target.x; });
svg_edges.attr("y2",function(d){ return d.target.y; });
svg_nodes.attr("cx",function(d){ return d.x; });
svg_nodes.attr("cy",function(d){ return d.y; });
});
tick 指的是時間間隔,也就是每一個時間間隔之后就刷新一遍畫面,刷新的內(nèi)容寫在后面的無名函數(shù) function 中, function 函數(shù)中寫上作圖的內(nèi)容。
使用原生js自己寫或js庫(框架)都是可以的,由于目前HTML5并不是所有的瀏覽器都完美支持,使用兼容性比較好的js庫是個不錯的選擇。
例如Highcharts圖標(biāo)庫就可以實現(xiàn)各類曲線圖、折線圖、區(qū)域圖、3D圖、柱狀圖等等。具體使用參考:。
Highcharts中做折線圖的demo代碼可以作為參考:
html?lang="en"
head
script?type="text/javascript"?src=""/script
script?type="text/javascript"?src=""/script
script?type="text/javascript"?src=""/script
script
$(function?()?{
$('#container').highcharts({
chart:?{
type:?'line'
},
title:?{
text:?'Monthly?Average?Temperature'
},
subtitle:?{
text:?'Source:?WorldClimate.com'
},
xAxis:?{
categories:?['Jan',?'Feb',?'Mar',?'Apr',?'May',?'Jun',?'Jul',?'Aug',?'Sep',?'Oct',?'Nov',?'Dec']
},
yAxis:?{
title:?{
text:?'Temperature?(°C)'
}
},
tooltip:?{
enabled:?false,
formatter:?function()?{
return?'b'+?this.series.name?+'/bbr/'+this.x?+':?'+?this.y?+'°C';
}
},
plotOptions:?{
line:?{
dataLabels:?{
enabled:?true
},
enableMouseTracking:?false
}
},
series:?[{
name:?'Tokyo',
data:?[7.0,?6.9,?9.5,?14.5,?18.4,?21.5,?25.2,?26.5,?23.3,?18.3,?13.9,?9.6]
},?{
name:?'London',
data:?[3.9,?4.2,?5.7,?8.5,?11.9,?15.2,?17.0,?16.6,?14.2,?10.3,?6.6,?4.8]
}]
});
});
/script
/head
body
div?id="container"?style="min-width:700px;height:400px"/div
/body
/html
方法只有一個:
通過canvas的方式,在畫布上畫圖
步驟:
1、定義一個canvas
2、獲取canvas,然后通過畫圖
示例:canvas 元素來顯示一個紅色的矩形
canvas?id="myCanvas"/canvas//定義一個canvas
script?type="text/javascript"
var?canvas=document.getElementById('myCanvas');//獲取canvas
var?ctx=canvas.getContext('2d');
ctx.fillStyle='#FF0000';?//圖形填充色
ctx.fillRect(0,0,80,100);?//繪制一個紅色矩形
/script
你的 paintComponent 中用的都是常數(shù), 沒用到 myhero 的數(shù)據(jù), 當(dāng)然不會動!
我稍為改一下就會動了:
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int x=myhero.x, y=myhero.y;
g.fillRect(x+50, y+80, 7, 40);
g.fillRect(x+57,y+87,20,24);
g.fillRect(x+77,y+80,7,40);
g.setColor(Color.red);
g.fillOval(x+59,y+92,15,15);
g.setColor(Color.black);
g.fillRect(x+65,y+68,5,24);
}
但這種畫法永遠(yuǎn)向著上方, 還不會轉(zhuǎn)向.
你必須再調(diào)整寫法.