❶ 如何畫Flot堆棧圖
因為Flot不支持堆棧圖,所以必須加入堆棧圖的插件jquery.flot.stack.js,此範例會用到的檔案清單如下.
<script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script>
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="/js/flot/excanvas.min.js"></script><![endif]-->
<script type="text/javascript" src="/js/flot/jquery.flot.js"></script>
<script type="text/javascript" src="/js/flot/jquery.flot.axislabels.js"></script>
<script type="text/javascript" src="/js/flot/jquery.flot.stack.js"></script>
<script type="text/javascript" src="/js/flot/jshashtable-2.1.js"></script>
<script type="text/javascript" src="/js/flot/jquery.numberformatter-1.2.3.min.js"></script>
接著我們將網站的DNS查詢數據建立成如下的數組格式,因為我們是用時間格式數據,所以建立了一個gd()函式用來取得javascript timestamps.這個範例我們用了3筆資料,為了簡化說明,我們這里只顯示1筆數據出來,後面2筆資料格式都是一樣的,數據格式程序代碼如下.
var data = [
[gd(2012, 1, 1), 208557], [gd(2012, 1, 2), 125068], [gd(2012, 1, 3), 931208], [gd(2012, 1, 4), 450040],
[gd(2012, 1, 5), 761180], [gd(2012, 1, 6), 744526], [gd(2012, 1, 7), 707095], [gd(2012, 1, 8), 601316],
[gd(2012, 1, 9), 187495], [gd(2012, 1, 10), 716189], [gd(2012, 1, 11), 587141], [gd(2012, 1, 12), 147266],
[gd(2012, 1, 13), 574670], [gd(2012, 1, 14), 175881], [gd(2012, 1, 15), 272519], [gd(2012, 1, 16), 211131],
[gd(2012, 1, 17), 637015], [gd(2012, 1, 18), 794050], [gd(2012, 1, 19), 399010], [gd(2012, 1, 20), 799942],
[gd(2012, 1, 21), 595768], [gd(2012, 1, 22), 717126], [gd(2012, 1, 23), 414923], [gd(2012, 1, 24), 462479],
[gd(2012, 1, 25), 674334], [gd(2012, 1, 26), 20312], [gd(2012, 1, 27), 675892], [gd(2012, 1, 28), 808655],
[gd(2012, 1, 29), 194543], [gd(2012, 1, 30), 664716], [gd(2012, 1, 31), 980720]
];
function gd(year, month, day) {
return new Date(year, month - 1, day).getTime();
}
堆棧圖選項
當你要畫堆棧圖時需要設定series.stack為true,這樣Flot就會以堆棧圖呈現,另外我們做的是堆棧折線圖,我們可以設定series.lines.fill為true,讓圖表用顏色填滿區塊,程序代碼如下.
series: {
stack: true,
lines: {
show: true,
fill: true
}
}
x軸和y軸部份我們一樣在<head>里加入jquery.flot.axislabels.js檔案後用設定axis.axisLabel設定軸標簽名稱還有其它如字型大小及字型樣式等,因為我們是用時間格式數據,所以xaxis.mode必須設定用"time",因為數據是抓一個月份的數據,所以xaxis.tickSize設定成[3, "day"],3表示刻度卷標以每隔3天顯示,而"day"而表示以日期顯示,xaxis.tickLength我們設定為10,表示刻度線以高度10像素來顯示.而axis.color設定成"black",這表示刻度標簽的顏色,因為Flot默認的標簽顏色為灰色的,我們改成黑色的比較明顯.
另外yaxis.tickFormatter用來自行定義刻度標簽的格式.x軸及y軸選項程序代碼如下.
xaxis: {
mode: "time",
tickSize: [3, "day"],
tickLength: 10,
color: "black",
axisLabel: "Date",
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelFontFamily: 'Verdana, Arial',
axisLabelPadding: 10
}
yaxis: {
color: "black",
axisLabel: "DNS Query Count",
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelFontFamily: 'Verdana, Arial',
axisLabelPadding: 3,
tickFormatter: function (v, axis) {
return $.formatNumber(v, { format: "#,###", locale: "us" });
}
}
選項的最後我們設定了網格的選項,因為我們有用到提示框的功能,所以grid.hoverable必須設為true才能顯示,此外我們還設定了圖表外框寬度grid.borderWidth,以及背景使用漸層色呈現grid.backgroundColor.
grid: {
hoverable: true,
borderWidth: 2,
backgroundColor: { colors: ["#EDF5FF", "#ffffff"] }
}
完成堆棧圖
最後一樣呼叫$.plot函式把數據及選項帶進去即完成.當你在畫堆棧折線圖時,其實就是把折線圖畫出來後設定series.stack:true及series.lines.fill:true而已,相信不會太難.下面我們還會介紹堆棧柱形圖及堆棧條形圖.
$(document).ready(function () {
$.plot($("#flot-placeholder"), dataset, options);
$("#flot-placeholder").UseTooltip();
});
堆棧圖柱形圖
堆棧柱形圖範例 (DNS Query)
我們沿用上面堆棧折線圖的程序代碼,改成堆棧柱形圖,只需要改選項里的幾個地方,第一個將series.lines改成series.bars,然後只留下show屬性,另外再加上bars.align設定成"center"讓條圖對齊中央,還有bars.barWidth設定成24 * 60 * 60 * 600, 為什麼這樣設定barWidth,因為我們x軸是用時間格式數據的,也就是以毫秒為單位,所以24 * 60 * 60 * 1000就等於一天,不過最後我們是乘以600不是1000,因為我們不想讓條圖相互貼在一起,讓條圖之間留點空隙看起來比較好看.
series: {
stack: true,
bars: {
show: true
}
}
bars: {
align: "center",
barWidth:24 * 60 * 60 * 600
}
堆棧圖條形圖
堆棧條形圖範例 (DNS Query)
條形圖就需要點功夫了,因為條形圖是y軸顯示時間,x軸為數字,首先你要先把數據建立出來如下.
var data = [
[569106, gd(2012, 1, 1)], [743944, gd(2012, 1, 2)], [120865, gd(2012, 1, 3)], [890208, gd(2012, 1, 4)],
[259723, gd(2012, 1, 5)], [177150, gd(2012, 1, 6)], [32430, gd(2012, 1, 7)], [274054, gd(2012, 1, 8)],
[63435, gd(2012, 1, 9)], [994514, gd(2012, 1, 10)], [885453, gd(2012, 1, 11)], [289791, gd(2012, 1, 12)],
[411717, gd(2012, 1, 13)], [95324, gd(2012, 1, 14)], [646479, gd(2012, 1, 15)], [448868, gd(2012, 1, 16)],
[669678, gd(2012, 1, 17)], [909944, gd(2012, 1, 18)], [675965, gd(2012, 1, 19)], [281272, gd(2012, 1, 20)],
[629781, gd(2012, 1, 21)], [330138, gd(2012, 1, 22)], [802835, gd(2012, 1, 23)], [139079, gd(2012, 1, 24)],
[187101, gd(2012, 1, 25)], [354332, gd(2012, 1, 26)], [361090, gd(2012, 1, 27)], [78171, gd(2012, 1, 28)],
[452212, gd(2012, 1, 29)], [404369, gd(2012, 1, 30)], [63509, gd(2012, 1, 31)]
];
接著設定bars.horizontal為true,若這里沒設定就會顯示成柱形圖,然後再設定yaxis.mode為"time",表示y軸以時間格式顯示,另外我們還設定了yaxis.min及yaxis.max,如此可限制y軸刻度顯示的最大及最小值.完整的選項程序代碼如下.
var options2 = {
series: {
stack: true,
bars: {
show: true
}
},
bars: {
lineWidth: 1,
barWidth: 24 * 60 * 60 * 450,
horizontal: true
},
xaxis: {
color: "black",
axisLabel: "Date",
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelFontFamily: 'Verdana, Arial',
axisLabelPadding: 10,
tickFormatter: function (v, axis) {
return $.formatNumber(v, { format: "#,###", locale: "us" });
}
},
yaxis: {
mode: "time",
tickSize: [3, "day"],
min: gd(2012, 1, 1),
max: gd(2012, 1, 31),
tickLength: 10,
color: "black",
axisLabel: "DNS Query Count",
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelFontFamily: 'Verdana, Arial',
axisLabelPadding: 3
},
grid: {
hoverable: true,
borderWidth: 2,
backgroundColor: { colors: ["#EDF5FF", "#ffffff"] }
}
};
❷ 根據代碼,畫出內存圖(棧內存+堆內存)
show(new Demo());語句,是在堆中i建一個對象,那麼內存分配給這個對象的地址是指向的是變數d,只不過這個d和上邊的那個d是不同的。這個是局部變數是在這個方法內部的變數。
jvm棧以幀為單位保存線程的狀態,當線程激活一個方法時,jvm就會創建一個當前幀來保存參數,局部變數,中間計算過程和其他數據。
(1) 堆棧。駐留於常規RAM(隨機訪問存儲器)區域,但可通過它的「堆棧指針」獲得處理的直接支持。堆棧指針若向下移,會創建新的內存;若向上移,則會釋放那些內存。
這是一種特別快、特別有效的數據保存方式,僅次於寄存器。創建程序時,Java編譯器必須准確地知道堆棧內保存的所有數據的「長度」以及「存在時間」。
(2) 堆。一種常規用途的內存池(也在RAM區域),其中保存了Java對象。和堆棧不同,「內存堆」或「堆」(Heap)最吸引人的地方在於編譯器不必知道要從堆里分配多少存儲空間,也不必知道存儲的數據要在堆里停留多長的時間。
因此,用堆保存數據時會得到更大的靈活性。要求創建一個對象時,只需用new命令編制相關的代碼即可。
(2)單片機堆棧圖怎麼畫擴展閱讀:
單片機應用中,堆棧是個特殊存儲區,堆棧屬於RAM空間的一部分,堆棧用於函數調用、中斷切換時保存和恢復現場數據。堆棧中的物體具有一個特性:第一個放入堆棧中的物體總是被最後拿出來, 這個特性通常稱為先進後出 (FILO—First-In/Last-Out)。
堆棧中定義了一些操作, 兩個最重要的是PUSH和POP。 PUSH(入棧)操作:堆棧指針(SP)加1,然後在堆棧的頂部加入一 個元素。POP(出棧)操作相反,出棧則先將SP所指示的內部ram單元中內容送入直接地址定址的單元中(目的位置),然後再將堆棧指針(SP)減1。這兩種操作實現了數據項的插入和刪除。
❸ 怎麼用visio畫單片機連線結構圖
繪圖之前應該准備好一個大致的手繪草稿,或者至少有一個思慮成熟的腹稿,因為任何繪圖都是繪圖者或設計者腦中映象的載體呈現,有了前期准備具體繪圖就很簡單了,無非就是一些配有文字的圖框用箭頭線相互連接起來,這些正是VISIO最為擅長的表達方式。
❹ 單片機流程圖怎麼畫,題目如下
程序思路是:
如果key1按下那麼scale加1
如果scale=1,當key2按下時最大值加;當key3按下時最大值減。
如果scale=2,當key2按下時最小值加;當key3按下時最小值減。
如果scale=3,那麼復位scale=0,程序結束。
如果key1未按且key2按下和key3同時按下,那麼
z1加1(有些看不清),如果key2釋放,這繼續加,否則結束。
如果所有鍵都未按,這結束。
❺ 什麼是單片機的程序框架,怎麼樣畫程序框圖。求大神們結合具體實例講解
比如如下:
ORG 0000H ;程序入口
LJMP MAIN
ORG 0003H ;中斷向量
LJMP EXT0
ORG 0030H
MAIN:
MOV SP,#5FH
SETB IT0
SETB EX0
SETB EA ;以上初始化
LOOP:
JB P1.0,LOOP1
CLR P0.0
SJMP LOOP
LOOP1:
SETB P0.0
SJMP LOOP ;以上主循環
EXT0:
RETI
END
;以上就是一個比較簡單的單片機程序框架:包括:程序入口,中斷,主循環
❻ 單片機中斷圖怎麼畫
中斷是單獨的向量入口,單獨從中斷進入,入棧開始直到出棧即可。
❼ 單片機堆棧
堆棧的特性是:
1.進棧,是先將堆棧指針SP的內容加1,然後將數據壓入SP所指的單元中;
2.出棧,是先將堆棧指針SP所指的內容取出到地址中,然後將堆棧指針SP的內容減一。
故此題是:37H+1 = 38H
❽ 什麼是堆棧MCS-51單片機的堆棧怎樣設置的
堆棧其實就是一塊存儲器區域,51單片機中可以用寄存器SP來設置棧頂地址,壓棧操作,地址是往上加的,出棧則地址往下減。遵循後進先出原則。
❾ 單片機電路圖怎麼畫
單片機是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器(CPU),隨機存儲器(RAM),只讀存儲器(ROM),多種IO口和中斷系統、定時器/計數器等功能(可能還包含顯示驅動電路、脈寬調制電路、模擬多路轉換器、AD轉換器等)集成到一塊矽片上構成的一個小而完善的微型計算機系統。單片機誕生於1971年,經歷了SCM、MCU、SoC三大階段,早期的SCM單片機都是8位或4位的。其中最成功的是INTEL的8051,此後在8051上發展出了MCS51系列MCU系統。單片機已經從20世紀80年代的4位、8位單片機,隨著工業控制領域要求的提高,開始出現了16位單片機,發展到現在運行速度可以媲美電腦CPU的高速單片機。
單片機作為計算機發展的一個重要分支領域,根據發展情況,從不同角度,單片機大致可以分為通用型/專用型、匯流排型/非匯流排型及工控型/家電型。通用型:80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。匯流排型:匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。控制型:一般工控型定址范圍大,運算能力強;用於家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
❿ 單片機原理圖怎麼畫
使用AD或CADENCE等PCB設計軟體進行繪制,所需元件使用庫元件或者自行繪制的元件符號。