Python常用的绘图工具包括:matplotlib
, seaborn
, plotly
等,以及一些其他专用于绘制某类图如词云图等的包,描绘绘图轨迹的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()
导入模块
导入 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()
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')
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')
pyecharts绘制仪表盘,只需要几行代码:
from pyecharts import charts
# 仪表盘
gauge = charts.Gauge()
gauge.add('Python小例子', [('Python机器学习', 30), ('Python基础', 70.),
('Python正则', 90)])
gauge.render(path="./data/仪表盘.html")
print('ok')
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