從乙個簡單的問題談起。怎麼樣畫這麼乙個影象?
恩,rotate一下應該就可以了
rotate[plot[sin[x], ], 90 degree]但是仔細觀察就會發現乙個問題了,x軸是反的。怎麼辦呢?
想到的乙個方法是scale,把x軸scale到-1倍就可以了。但列位試試,不論怎麼把scale作用到plot上都是報錯。以前也曾經試圖把plot物件和circle,point畫在同乙個graphics裡面,但是同樣也失敗了。這說明 plot物件和point, line 這些 graphics primitives很不同, 因此我們有必要研究一下plot物件的結構。
首先使用treeform檢視乙個簡單的 plot[sin[x],]
不難發現結果是以graphics作為根的,這個很容易理解,畢竟plot出來的結果既含有座標軸,又含有標籤,還有資料影象,肯定是個複雜的graphics物件,在幫助裡也說得很明確,「plot normally returns graphics. 」。因此,我們就不能夠把plot結果像disk,arrow一樣插入到graphics中,因為它自己本身就是graphics物件。同時,針對graphics primitive的函式也都不能直接作用在plot結果上,比如上面提到的scale。
往下看,graphics包含了兩個list,前者包含著很多primitive物件,後者是屬性列表,這和我們平時生成graphics的方法是一致的,因為它本來就是graphics嘛。
如上圖,我們只看第乙個list。它本身也只包含乙個list。再往下一層就可以看到我們的圖線了,處於第三層的list包含了hue和line兩個元素。我們試著同時繪製兩條圖線,treeform@plot[, ],會發現新新增的圖線也是處於第三層,第二層依然是只有乙個孤零零的list。因此我們就可以知道,為了得到 plot的圖線資料,只需要把第3層的line集合提取出來就行了。
plot[, ][[1, 1]] //使用 cases, 我們可以提取出以line開頭的子表示式。cases[#, line[___], infinity] &
至此,我們基本了解plot結果的大致結構了,plot可以看作是一種特殊的graphics求值器,先根據函式式求出散點序列,轉換為line物件,然後填充到乙個graphics物件裡。plot的那些axes,epilog,plotrange屬性,其實是來自於graphics而已。如果想要把plot和circle放到一起,就不能夠想當然的把plot放到graphics裡面了,因為graphics是不支援巢狀的,可行方法有以下幾種
plot[sin[x], , epilog -> circle[, 0.1]]
show[plot[sin[x], ], graphics[circle[, 0.1]]]
graphics[, 0.1如果只是想獲得plot圖形的資料,以便進一步處理,直接一層層剝皮即可], inset[plot[sin[x], ], , , ]}]
plot[sin[x], ] //或者使用模式匹配first
//first
//last
//last
plot[sin[x], ] //cases[#, line[___], infinity] &
a = plot[sin[x], ] //cases[#, line[___], infinity] &;
graphics}, axes ->true,
ticks -> , range[-4 \[pi], 4
\[pi], \[pi]]},
plotrange -> , automatic}]
細解arguments物件
函式內部的arguments物件到底是什麼?難道就是簡單的接收函式引數的物件嗎?在這些問題中,開始了重新對arguments的重新學習。arguments物件是所有 非箭頭 函式中都可用的區域性變數。你可以使用arguments物件在函式中引用函式的引數。此物件包含傳遞給函式的每個引數的條目,第乙個...
物件是隱式解引用
引用和指標 引用和指標引用的行為像乙個const指標解引用乙個有趣的關係式。從而給出如下 1 2 3 intnvalue 5 int constpnvalue nvalue int rnvalue nvalue pnvalue和rnvalue評估同。作為乙個結果,下面兩個語句 產生相同的效果 1 2...
將Model物件歸檔解檔
物件編碼把物件的類特徵以及物件狀態轉化某種格式,這種格式可儲存,也可在程序間傳遞。類的型別以及例項資料會被寫入到某種位元組流裡面,當程式結束的時候,該位元組流可進行持久化。程式啟動的時候,新分配物件可以解碼之前儲存的自身描述,然後把自己恢復到之前執行時的狀態。編碼通常需和歸檔協作。歸檔將物件圖轉化成...