Calysto 是一個(gè)小巧的 Python 工具庫(kù)抚垄,用它可以簡(jiǎn)單方便地通過(guò) Jupyter 筆記本頁(yè)面進(jìn)行圖形繪制和模擬演示齐遵。 Calysto 項(xiàng)目發(fā)布頁(yè)面為 https://github.com/Calysto/calysto
你可以在系統(tǒng)終端窗口輸入以下命令來(lái)安裝 Calysto 軟件包:
pip install calysto
安裝完成后即可嘗試以下繪制圖形對(duì)象的示例,首先導(dǎo)入包內(nèi)的圖形模塊 calysto.graphics 中的所有對(duì)象和顯示模塊 calysto.display 中的兩個(gè)函數(shù)体捏,接下來(lái)創(chuàng)建一個(gè) Canvas 畫(huà)布對(duì)象以及任意多個(gè)圖形對(duì)象例如 Circle 圓形冠摄,Text 文本,Polygon 多邊形等几缭,然后調(diào)用畫(huà)布對(duì)象的 draw 方法在畫(huà)布上繪制圖形對(duì)象河泳,最后調(diào)用 display 函數(shù)在 Jupyter 筆記本頁(yè)面中顯示畫(huà)布:
from calysto.graphics import *
from calysto.display import display, clear_output
canvas = Canvas((500, 200)) # 創(chuàng)建畫(huà)布,位置參數(shù)指定大小是多少個(gè)像素
# 創(chuàng)建圓形年栓,位置參數(shù)指定圓心拆挥,半徑,關(guān)鍵字參數(shù)有填充顏色某抓,線條顏色等
circle = Circle((100, 100), 30, fill="red", stroke="green")
circle.stroke_width(3) # 也可調(diào)用對(duì)象的方法纸兔,例如stroke_width()改變線條寬度
canvas.draw(circle)
# 創(chuàng)建文本,位置參數(shù)指定文本否副,起點(diǎn)汉矿,可以使用style關(guān)鍵字參數(shù)設(shè)置任意CSS樣式
text = Text("畫(huà)布上的文本", (180, 100), fill="blue", stroke="red", style="font-weight:bold;font-size:30px;font-style:italic")
canvas.draw(text)
# 創(chuàng)建多邊形,位置參數(shù)指定所有頂點(diǎn)
polygon = Polygon([(400, 100), (430, 100), (480, 130), (460, 150), (420, 150)])
canvas.draw(polygon)
display(canvas) # 顯示畫(huà)布
圖形模塊中還定義了 Turtle 海龜對(duì)象备禀,可以在 Jupyter 筆記本頁(yè)面中控制海龜進(jìn)行繪圖洲拇,但具體實(shí)現(xiàn)上與標(biāo)準(zhǔn)庫(kù)的 turlte 模塊有所差別,例如并不能填充海龜畫(huà)出的封閉空間曲尸,也不會(huì)顯示海龜?shù)囊苿?dòng)過(guò)程(不過(guò)通過(guò)刷新畫(huà)布也是可以生成動(dòng)效的)赋续。
import time # 導(dǎo)入標(biāo)準(zhǔn)庫(kù)time模塊用于定時(shí)操作
canvas = Canvas((400, 200))
tt = Turtle(canvas, (0, 100)) # 創(chuàng)建海龜,位置參數(shù)指定所在畫(huà)布队腐,起始點(diǎn)
tt.stroke = "red" # 繪制紅色36芒星
tt.stroke_width = 2
for _ in range(36):
tt.forward(180)
tt.right(170)
tt.penup()
tt.goto(220, 100) # 動(dòng)態(tài)繪制藍(lán)色36芒星
tt.stroke = "blue"
tt.pendown()
for _ in range(36):
tt.forward(180)
tt.right(170)
clear_output(wait=True) # 添加刷新畫(huà)布的代碼
display(canvas)
time.sleep(.25)
Calysto 沒(méi)有提供很完善的文檔蚕捉,學(xué)習(xí)者需要自行研究,例如它的繪圖模塊是通過(guò)另一個(gè)第三方包 svgwtrite 在網(wǎng)頁(yè)中輸出 SVG 圖形來(lái)實(shí)現(xiàn)的柴淘,因此可以參看相應(yīng)文檔了解詳情 https://svgwrite.readthedocs.io