引言
Python常用的繪圖工具包括:matplotlib
, seaborn
, plotly
等,以及一些其他專用於繪製某類圖如詞雲圖等的包,描繪繪圖軌跡的turtle
包等。
1 turtle繪製奧運五環圖
turtle繪圖的函數非常好用,基本看到函數名字就能知道含義,下面使用turtle來繪製奧運五環圖。
1 導入庫
import turtle as p
2 定義畫圓函數
def drawCircle(x,y,c='red'):
p.pu()# 擡起畫筆
p.goto(x,y) # 繪製圓的起始位置
p.pd()# 放下畫筆
p.color(c)# 繪製c色圓環
p.circle(30,360) #繪製圓:半徑,角度
3 畫筆基本設置
p.pensize(3) # 畫筆尺寸設置3
4 繪製五環圖調用畫圓函數
drawCircle(0,0,'blue')
drawCircle(60,0,'black')
drawCircle(120,0,'red')
drawCircle(90,-30,'green')
drawCircle(30,-30,'yellow')
p.done()
結果
2 turtle繪製漫天雪花
導入模塊
導入 turtle
庫和 python的 random
import turtle as p
import random
繪製雪花
def snow(snow_count):
p.hideturtle()
p.speed(500)
p.pensize(2)
for i in range(snow_count):
r = random.random()
g = random.random()
b = random.random()
p.pencolor(r, g, b)
p.pu()
p.goto(random.randint(-350, 350), random.randint(1, 270))
p.pd()
dens = random.randint(8, 12)
snowsize = random.randint(10, 14)
for _ in range(dens):
p.forward(snowsize) # 向當前畫筆方向移動snowsize像素長度
p.backward(snowsize) # 向當前畫筆反方向移動snowsize像素長度
p.right(360 / dens) # 順時針移動360 / dens度
繪製地面
def ground(ground_line_count):
p.hideturtle()
p.speed(500)
for i in range(ground_line_count):
p.pensize(random.randint(5, 10))
x = random.randint(-400, 350)
y = random.randint(-280, -1)
r = -y / 280
g = -y / 280
b = -y / 280
p.pencolor(r, g, b)
p.penup() # 擡起畫筆
p.goto(x, y) # 讓畫筆移動到此位置
p.pendown() # 放下畫筆
p.forward(random.randint(40, 100)) # 眼當前畫筆方向向前移動40~100距離
主函數
def main():
p.setup(800, 600, 0, 0)
# p.tracer(False)
p.bgcolor("black")
snow(30)
ground(30)
# p.tracer(True)
p.mainloop()
##運行
if __name__=="__main__":
main()
動態圖結果展示:
3 wordcloud詞雲圖
import hashlib
import pandas as pd
from wordcloud import WordCloud
geo_data=pd.read_excel(r"../data/geo_data.xlsx")
print(geo_data)
# 0 深圳 1 深圳 2 深圳 3 深圳 4 深圳 5 深圳
# 6 深圳 7 廣州 8 廣州 9 廣州
words = ','.join(x for x in geo_data['city'] if x != []) #篩選出非空列表值
wc = WordCloud(
background_color="green", #背景顏色"green"綠色
max_words=100, #顯示最大詞數
font_path='./fonts/simhei.ttf', #顯示中文
min_font_size=5,
max_font_size=100,
width=500 #圖幅寬度 )
x = wc.generate(words)
x.to_file('../data/geo_data.png')
測試結果:
4 pyecharts詞雲圖
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [ ("Python", 100), ("C++", 80), ("Java", 95), ("R", 50),
("JavaScript", 79),("C", 65)]
def wordcloud() -> WordCloud:
c = (WordCloud()
# word_size_range: 單詞字體大小範圍
.add("", words, word_size_range=[20, 100], shape='cardioid')
.set_global_opts(title_opts=opts.TitleOpts(title="WordCloud")) )
return c
wordcloud().render('./img/wordcloud.html')
("C",65)
表示在本次統計中C語言出現65次
pyecharts繪製儀表盤
pyecharts繪製儀表盤,只需要幾行代碼:
from pyecharts import charts
# 儀表盤
gauge = charts.Gauge()
gauge.add('Python小例子', [('Python機器學習', 30), ('Python基礎', 70.),
('Python正則', 90)])
gauge.render(path="./data/儀表盤.html")
print('ok')
pyecharts水球圖
from pyecharts import options as opts
from pyecharts.charts import Liquid, Page
from pyecharts.globals import SymbolType
def liquid() -> Liquid:
c = (
Liquid()
.add("lq", [0.67, 0.30, 0.15])
.set_global_opts(title_opts=opts.TitleOpts(title="Liquid"))
)
return c
liquid().render('./img/liquid.html')
水球圖的取值[0.67, 0.30, 0.15]
表示下圖中的三個波浪線
,一般代表三個百分比:
備註,水球和儀表盤的代碼還沒調試通,報錯,from pyecharts import options as opts ImportError: cannot import name ‘options’,怎麼調試通,懇請大佬賜教。
參考來源:https://github.com/jackzhenguo/python-small-examples