Python 與 Jupyter 工具庫 Calysto

Calysto 是一個小巧的 Python 工具庫,用它可以簡單方便地通過 Jupyter 筆記本頁面進(jìn)行圖形繪制和模擬演示。 Calysto 項目發(fā)布頁面為 https://github.com/Calysto/calysto

你可以在系統(tǒng)終端窗口輸入以下命令來安裝 Calysto 軟件包:

pip install calysto

安裝完成后即可嘗試以下繪制圖形對象的示例,首先導(dǎo)入包內(nèi)的圖形模塊 calysto.graphics 中的所有對象和顯示模塊 calysto.display 中的兩個函數(shù),接下來創(chuàng)建一個 Canvas 畫布對象以及任意多個圖形對象例如 Circle 圓形,Text 文本,Polygon 多邊形等,然后調(diào)用畫布對象的 draw 方法在畫布上繪制圖形對象,最后調(diào)用 display 函數(shù)在 Jupyter 筆記本頁面中顯示畫布:

from calysto.graphics import *
from calysto.display import display, clear_output
canvas = Canvas((500, 200))  # 創(chuàng)建畫布,位置參數(shù)指定大小是多少個像素
# 創(chuàng)建圓形,位置參數(shù)指定圓心,半徑,關(guān)鍵字參數(shù)有填充顏色,線條顏色等
circle = Circle((100, 100), 30, fill="red", stroke="green")
circle.stroke_width(3)  # 也可調(diào)用對象的方法,例如stroke_width()改變線條寬度
canvas.draw(circle)
# 創(chuàng)建文本,位置參數(shù)指定文本,起點,可以使用style關(guān)鍵字參數(shù)設(shè)置任意CSS樣式
text = Text("畫布上的文本", (180, 100), fill="blue", stroke="red", style="font-weight:bold;font-size:30px;font-style:italic")
canvas.draw(text)
# 創(chuàng)建多邊形,位置參數(shù)指定所有頂點
polygon = Polygon([(400, 100), (430, 100), (480, 130), (460, 150), (420, 150)])
canvas.draw(polygon)
display(canvas)  # 顯示畫布
calysto_canvas.png

圖形模塊中還定義了 Turtle 海龜對象,可以在 Jupyter 筆記本頁面中控制海龜進(jìn)行繪圖,但具體實現(xiàn)上與標(biāo)準(zhǔn)庫的 turlte 模塊有所差別,例如并不能填充海龜畫出的封閉空間,也不會顯示海龜?shù)囊苿舆^程(不過通過刷新畫布也是可以生成動效的)。

import time  # 導(dǎo)入標(biāo)準(zhǔn)庫time模塊用于定時操作
canvas = Canvas((400, 200))
tt = Turtle(canvas, (0, 100))  # 創(chuàng)建海龜,位置參數(shù)指定所在畫布,起始點
tt.stroke = "red"  # 繪制紅色36芒星
tt.stroke_width = 2
for _ in range(36):
    tt.forward(180)
    tt.right(170)
tt.penup()
tt.goto(220, 100)  # 動態(tài)繪制藍(lán)色36芒星
tt.stroke = "blue"
tt.pendown()
for _ in range(36):
    tt.forward(180)
    tt.right(170)
    clear_output(wait=True)  # 添加刷新畫布的代碼
    display(canvas)
    time.sleep(.25)
calysto_turtle.png

Calysto 沒有提供很完善的文檔,學(xué)習(xí)者需要自行研究,例如它的繪圖模塊是通過另一個第三方包 svgwtrite 在網(wǎng)頁中輸出 SVG 圖形來實現(xiàn)的,因此可以參看相應(yīng)文檔了解詳情 https://svgwrite.readthedocs.io

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容