返回列表 发帖

Windows下Python3使用绘图库Matplotlib

Win7连接公网安装第三方库(matplotlib):
pip3 install matplotlib==3.3.0 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com
图片1.png


列出当前环境所有已经安装的第三方库的名称和其版本号:
C:\Users\jacky>pip3 freeze
cycler==0.11.0
kiwisolver==1.3.1
matplotlib==3.3.0
numpy==1.19.5
Pillow==8.4.0
pyparsing==3.0.9
python-dateutil==2.8.2
six==1.16.0

C:\Users\jacky>

注释:会附带安装一些相关的依赖软件包。





######

例子一:
在一个窗体中绘制单个图形(线形图):

脚本内容:(C:\Users\jacky\Desktop\xx.py)
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #正常显示负号

plt.title("苹果的销量情况") #图形标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

x1 = ["一月份","二月份","三月份","四月份","五月份"] #x轴的点的值

y1 = [30,20,50,60,80] #y轴的点的值

plt.plot(x1,y1,label='',color='red',linewidth=1,linestyle='--')

plt.show() #显示图形


脚本运行中的效果:(组合键Ctrl+c可结束程序的执行)
图片2.png

图片3.png





######

例子二:
在一个窗体中绘制单个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

plt.title("苹果的销量情况") #图形标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

A1 = "一月份"
A2 = "二月份"
A3 = "三月份"
A4 = "四月份"
A5 = "五月份"
x1 = [A1,A2,A3,A4,A5] #x轴的点的值

B1 = 30
B2 = 20
B3 = 50
B4 = 60
B5 = 80
y1 = [B1,B2,B3,B4,B5] #y轴的点的值

plt.plot(x1,y1,label='苹果',color='blue',linewidth=1.0,linestyle='--')
plt.legend() #显示图例(label

plt.grid(True,linestyle=':',color='red',alpha=0.6) #显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片4.png





######

例子三:
在一个窗体中绘制单个图形(线形图):(保存图片,也显示图形)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果Apple的销量情况") #图形标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

A1 = "一月份"
A2 = "二月份"
A3 = "三月份"
A4 = "四月份"
A5 = "五月份"
x1 = [A1,A2,A3,A4,A5] #x轴的点的值

B1 = 30
B2 = 20
B3 = 50
B4 = 60
B5 = 80
y1 = [B1,B2,B3,B4,B5] #y轴的点的值

plt.plot(x1,y1,label='苹果Apple',color='blue',linewidth=1.5,linestyle='--')
plt.legend() #显示图例(label)

plt.grid(True,linestyle=':',color='green',alpha=0.6) #显示网格线

plt.savefig("D:\\share\\苹果的销量情况分析图_abc.png") #保存图片;图片名称是自定义的;会把图片保存到文件夹D:\share里面;假如图片名称重复,会被直接覆盖

plt.show() #显示图形


脚本运行中的效果:
图片5.png

保存下来的图片:
图片6.png





######

例子四:
在一个窗体中绘制单个图形(线形图):(只保存图片,不显示图形)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果Apple的销量情况") #图形标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

A1 = "一月份"
A2 = "二月份"
A3 = "三月份"
A4 = "四月份"
A5 = "五月份"
x1 = [A1,A2,A3,A4,A5] #x轴的点的值

B1 = 30
B2 = 20
B3 = 50
B4 = 60
B5 = 80
y1 = [B1,B2,B3,B4,B5] #y轴的点的值

plt.plot(x1,y1,label='苹果Apple',color='red',linewidth=2,linestyle='-')
plt.legend() #显示图例(label)

plt.grid(True,linestyle=':',color='yellow',alpha=0.6) #显示网格线

plt.savefig("D:/share/苹果的销量情况分析图_def.png") #保存图片


脚本运行后的效果:
C:\Users\jacky\Desktop>python xx.py

C:\Users\jacky\Desktop>


保存下来的图片:
图片7.png

图片8.png





######

例子五:
一次性分别在两个窗体绘制单个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#第一个图形
plt.title("苹果Apple的销量情况") #第一个图形的标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

x1 = ["一月份","二月份","三月份","四月份","五月份"]
y1 = [30,20,50,60,80]
plt.plot(x1,y1,label='苹果Apple',color='red',linewidth=1.0,linestyle='--')
plt.legend() #第一个图形显示图例(label)

plt.figure() #新建一个窗体

#第二个图形
plt.title("梨Pear的销量情况") #第二个图形的标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

A1 = "一月份"
A2 = "二月份"
A3 = "三月份"
x2 = [A1,A2,A3]

B1 = 2.1
B2 = 3.2
B3 = 8.7
y2 = [B1,B2,B3]

plt.plot(x2,y2,label='$Pear$',color='green',linewidth=2.0,linestyle='-') #label的值使用了 $ 会出现字体倾斜,但不能有中文了

plt.legend() #第二个图形显示图例(label)
plt.grid(True,linestyle=':',color='red',alpha=0.6) #第二个图形显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片9.png

图片10.png





######

例子六:
一次性分别在三个窗体绘制单个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#第一个图形
plt.title("苹果Apple的销量情况") #第一个图形的标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

x1 = ["一月份","二月份","三月份","四月份","五月份"]
y1 = [30,20,50,60,80]
plt.plot(x1,y1,label='苹果Apple',color='red',linewidth=1.0,linestyle='--')
plt.legend() #第一个图形显示图例(label)

plt.figure() #新建一个窗体

#第二个图形
plt.title("梨Pear的销量情况") #第二个图形的标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

A1 = "一月份"
A2 = "二月份"
A3 = "三月份"
x2 = [A1,A2,A3]

B1 = 2.1
B2 = 3.2
B3 = 8.7
y2 = [B1,B2,B3]

plt.plot(x2,y2,label='$Pear$',color='green',linewidth=2.0,linestyle='-')
plt.legend() #第二个图形显示图例(label)
plt.grid(True,linestyle=':',color='red',alpha=0.6) #第二个图形显示网格线

plt.figure() #再新建一个窗体

#第三个图形
plt.title("香蕉Banana的销量情况") #第三个图形的标题
plt.xlabel('月份') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

A1 = "一月份"
A2 = "二月份"
A3 = "三月份"
x2 = [A1,A2,A3]

B1 = 21
B2 = 32
B3 = 87
y2 = [B1,B2,B3]

plt.plot(x2,y2,label='Banana',color='peru',linewidth=2.0,linestyle='-')
plt.legend() #第三个图形显示图例(label)

plt.grid(True,linestyle=':',color='orchid',alpha=0.6) #第三个图形显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片11.png

图片12.png

图片13.png





#######

例子七:
在同一个窗体中纵向绘制两个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


#第一个图形
plt.subplot(2,1,1) #2行1列中的第1个图形
plt.title("苹果(Apple)的销量情况") #第一个图形的标题

x1 = ["一月份","二月份","三月份","四月份"]
y1 = [3,8,9,5]
plt.plot(x1,y1,label='Apple',color='red',linewidth=1.0,linestyle='--')
plt.xlabel('月份') #第一个图形的x轴名称
plt.ylabel('销量(斤)') #第一个图形的y轴名称
plt.legend() #第一个图形显示图例(label)

plt.grid(True,linestyle=':',color='red',alpha=0.6) #第一个图形显示网格线


#第二个图形
plt.subplot(2,1,2) #2行1列中的第2个图形
plt.title("梨(Pear)的销量情况") #第二个图形的标题
x2 = ["一月份","二月份","三月份"]
y2 = [2,3,9]
plt.plot(x2,y2,label='$Pear$',color='green',linewidth=1.6,linestyle='-')
plt.xlabel('月份') #第二个图形的x轴名称
plt.ylabel('销量(斤)') #第二个图形的y轴名称
plt.legend() #第二个图形显示图例(label)

plt.grid(True,linestyle=':',color='orchid',alpha=0.6) #第二个图形显示网格线


plt.show() #显示图形


脚本运行中的效果:
图片14.png





#######

例子八:
在同一个窗体中纵向绘制三个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


#第一个图形
plt.subplot(3,1,1) #3行1列中的第1个图形
plt.title("Welcome to zhuohua.") #第一个图形的标题

x1 = ["一月份","二月份","三月份","四月份"]
y1 = [3,8,9,5]
plt.plot(x1,y1,label='苹果Apple',color='red',linewidth=1.6,linestyle='--')
plt.legend() #第一个图形显示图例(label)

plt.grid(True,linestyle=':',color='red',alpha=0.6) #第一个图形显示网格线


#第二个图形
plt.subplot(3,1,2) #3行1列中的第2个图形
x2 = ["一月份","二月份","三月份"]
y2 = [2,3,9]
plt.plot(x2,y2,label='梨',color='green',linewidth=1.6,linestyle='-')
plt.ylabel('销量(斤)') #第二个图形的y轴名称
plt.legend() #第二个图形显示图例(label)

plt.grid(True,linestyle=':',color='orchid',alpha=0.6) #第二个图形显示网格线


#第三个图形
plt.subplot(3,1,3) #3行1列中的第3个图形
x3 = ["一月份","二月份","三月份"]
y3 = [12.2,13.7,9.6]
plt.plot(x3,y3,label='香蕉',color='yellow',linewidth=2,linestyle='-')
plt.xlabel('月份') #第三个图形的x轴名称
plt.legend() #第三个图形显示图例(label)


plt.show() #显示图形


脚本运行中的效果:
图片15.png





#######

例子九:
在同一个窗体中横向绘制两个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#第一个图形
plt.subplot(1,2,1) #1行2列中的第1个图形
x1 = ["一月份","二月份"]
y1 = [80.7,60.8]
plt.title("苹果销量情况") #第一个图形的标题
plt.plot(x1,y1,label='Apple',color='red',linewidth=1.0,linestyle='--')
plt.xlabel('Month') #第一个图形显示x轴名称
plt.ylabel('销量(斤)') #第一个图形显示y轴名称
plt.legend() #第一个图形显示图例(label)

plt.grid(True,linestyle=':',color='red',alpha=0.6) #第一个图形显示网格线


#第二个图形
plt.subplot(1,2,2) #1行2列中的第2个图形
x2 = ["一月份","二月份","三月份"]
y2 = [2,3,9]
plt.title("梨的销量情况") #第二个图形的标题
plt.plot(x2,y2,label='$Pear$',color='green',linewidth=1.0,linestyle='-')
plt.xlabel('Month') #第二个图形显示x轴名称
plt.legend() #第二个图形显示图例(label)

plt.grid(True,linestyle=':',color='orchid',alpha=0.6) #第二个图形显示网格线


plt.show() #显示图形


脚本运行中的效果:
图片16.png





#######

例子十:
在同一个窗体中横向绘制三个图形(线形图):

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


#第一个图形
plt.subplot(1,3,1) #1行3列中的第1个图形
x1 = ["一月份","二月份"]
y1 = [80.7,60.8]
plt.title("苹果销量情况") #第一个图形的标题
plt.plot(x1,y1,label='Apple',color='red',linewidth=1.0,linestyle='--')
plt.ylabel('销量(斤)') #第一个图形显示y轴名称
plt.legend() #第一个图形显示图例(label)

plt.grid(True,linestyle=':',color='red',alpha=0.6) #第一个图形显示网格线


#第二个图形
plt.subplot(1,3,2) #1行3列中的第2个图形
x2 = ["一月份","二月份"]
y2 = [2,3]
plt.title("梨的销量情况") #第二个图形的标题
plt.plot(x2,y2,label='$Pear$',color='green',linewidth=1.0,linestyle='-')
plt.xlabel('Month') #第二个图形显示x轴名称
plt.legend() #第二个图形显示图例(label)


#第三个图形
plt.subplot(1,3,3) #1行3列中的第3个图形
x2 = ["一月份","二月份"]
y2 = [12,23]
plt.title("香蕉的销量情况") #第三个图形的标题
plt.plot(x2,y2,label='香蕉',color='yellow',linewidth=2.0,linestyle='-')


plt.show() #显示图形


脚本运行中的效果:
图片17.png





#######

例子十一:
在同一个图形(线形图)中绘制两条数据线:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果、梨的销量情况") #图形的标题

x1 = ["一月份","二月份","三月份","四月份","五月份"] #x轴的点的值

y1 = [3,8,9,5,7.8] #第一条数据线的y轴的点的值
plt.plot(x1,y1,label='$Apple$',color='red',linewidth=1.0,linestyle='--')

y2 = [2,3,9,5.5,7] #第二条数据线的y轴的点的值
plt.plot(x1,y2,label='Pear',color='green',linewidth=1.0,linestyle='-')

plt.legend() #显示图例(label)

plt.xlabel('月份') #显示x轴名称
plt.ylabel('销量(斤)') #显示y轴名称

plt.grid(True,linestyle=':',color='red',alpha=0.6) #显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片18.png





#######

例子十二:
在同一个图形(线形图)中绘制三条数据线:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果、梨、香蕉的销量情况") #图形的标题

x1 = ["一月份","二月份","三月份","四月份","五月份"] #x轴的点的值

y1 = [3,8,9,5,7.8] #第一条数据线的y轴的点的值
plt.plot(x1,y1,label='$Apple$',color='red',linewidth=1.0,linestyle='--')

y2 = [2,3,9,5.5,7] #第二条数据线的y轴的点的值
plt.plot(x1,y2,label='Pear',color='green',linewidth=1,linestyle='-')

A1 = 3
A2 = 5
A3 = 6
A4 = 3.8
A5 = 7
y3 = [A1,A2,A3,A4,A5] #第三条数据线的y轴的点的值
plt.plot(x1,y3,label='香蕉',color='yellow',linewidth=1.6,linestyle='-')

plt.legend() #显示图例(label)

plt.ylabel('销量(斤)') #显示y轴名称

plt.grid(True,linestyle=':',color='red',alpha=0.6) #显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片19.png















#######

例子十三:
在一个窗体中绘制饼形图:(显示百分比)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5)) #自定义窗体的宽和高

Labels = ['Mon','Tue','Wed','Thu','Fri','Saturday','星期日'] #一周中的每一天
Data = [18,20.2,5.6,15.3,20,15,15] #一周中每一天的销量值

plt.title("苹果一周销量情况(百分比)") #图形标题

plt.pie(Data,labels=Labels,autopct='%1.1f%%') #百分比保留一位小数
plt.legend() #显示图例(label)

plt.axis('equal') #设置x、y轴的尺寸相等,使饼形图为正圆形

plt.show() #显示图形


脚本运行中的效果:
图片1.png





#######

例子十四:
在一个窗体中绘制饼形图:(显示饼图阴影)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

Labels = ['Mon','Tue','Wed','Thu','Fri','Saturday','星期日']
Data = [18,20.2,5.6,15.3,20,15,15]

plt.title("苹果一周销量情况(百分比)") #图形标题

plt.pie(Data,labels=Labels,autopct='%1.1f%%',shadow=True) #饼图阴影
plt.legend()

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片2.png





#######

例子十五:
在一个窗体中绘制饼形图:(显示饼图分离)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

Labels = ['Mon','Tue','Wed','Thu','Fri','Saturday','星期日']
Data = [18,20.2,5.6,15.3,20,15,15]

#饼图分离
Explode = (0,0,0.1,0,0,0,0) #第三个标签分离

plt.title("苹果一周销量情况(百分比)") #图形标题

plt.pie(Data,labels=Labels,autopct='%1.1f%%',explode=Explode) #饼图分离
plt.legend()

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片3.png





#######

例子十六:
在一个窗体中绘制饼形图:(显示饼图分离+阴影)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

#饼图分离
Explode = (0,0,0.1,0,0.1,0,0) #第三、五个标签分离

plt.title("苹果一周销量情况(百分比)") #图形标题

plt.pie(Data,labels=Labels,autopct='%1.1f%%',explode=Explode,shadow=True) #饼图分离+阴影
plt.legend()

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片4.png





#######

例子十七:
在一个窗体中绘制饼形图:(设置饼图字体)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

plt.title("苹果一周销量情况(百分比)") #图形标题

plt.pie(Data,labels=Labels,autopct='%1.2f%%',textprops={'fontsize':10,'color':'blue'}) #百分比保留两位小数;自定义字体大小,字体设置为蓝色
plt.legend()

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片5.png





#######

例子十八:
在一个窗体中绘制饼形图:(显示百分比+实际值)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

plt.title("苹果一周销量情况(百分比+实际值)") #图形标题

def func1(Data):
        def func2(pct):
                total = sum(Data)
                val = int(round(pct*total/100.0)) #不保留小数
               
                #同时显示百分比、实际值
                return '{p:.0f}% ({v:d}斤)'.format(p=pct,v=val) #不保留小数
        return func2

plt.pie(Data, labels=Labels, autopct=func1(Data))
plt.legend() #显示图例(label)

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片6.png





#######

例子十九:
在一个窗体中绘制饼形图:(显示百分比+实际值)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

plt.title("苹果一周销量情况(百分比+实际值)") #图形标题

def func1(Data):
        def func2(pct):
                total = sum(Data)
                val = float(round(pct*total/100.0,1)) #保留一位小数
               
                #同时显示百分比、实际值
                return '{p:.1f}% ({v:.1f}斤)'.format(p=pct,v=val) #保留一位小数
        return func2

plt.pie(Data, labels=Labels, autopct=func1(Data))
plt.legend() #显示图例(label)

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片7.png





#######

例子二十:
在一个窗体中绘制饼形图:(显示百分比+实际值)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

#饼图分离
Explode = (0.1,0,0,0.1,0,0,0) #第一、四个标签分离

plt.title("苹果一周销量情况(百分比+实际值)") #图形标题

def func1(Data):
        def func2(pct):
                total = sum(Data)
                val = float(round(pct*total/100.0,2)) #保留两位小数
               
                #同时显示百分比、实际值
                return '{p:.2f}% ({v:.2f}斤)'.format(p=pct,v=val) #保留两位小数
        return func2

plt.pie(Data, labels=Labels, autopct=func1(Data),explode=Explode) #饼图分离
plt.legend()

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片8.png





#######

例子二十一:
在一个窗体中绘制饼形图:(显示百分比+实际值)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

#饼图分离
Explode = (0,0,0,0,0,0.1,0.1) #第六、七个标签分离

plt.title("苹果一周销量情况(百分比+实际值)") #图形标题

def func1(Data):
        def func2(pct):
                total = sum(Data)
                val = float(round(pct*total/100.0,3)) #保留三位小数
               
                #同时显示百分比、实际值
                return '{p:.3f}% ({v:.3f}斤)'.format(p=pct,v=val) #保留三位小数
        return func2

plt.pie(Data, labels=Labels, autopct=func1(Data),explode=Explode,shadow=True) #饼图分离+阴影

plt.legend() #显示图例(label)

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片9.png



#######

例子二十二:
在一个窗体中绘制饼形图:(显示实际值)

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(8,5))

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
A6 = 'Saturday'
A7 = '星期日'
Labels = [A1,A2,A3,A4,A5,A6,A7]

B1 = 18
B2 = 20.2
B3 = 5.6
B4 = 15.3
B5 = 20
B6 = 15
B7 = 15
Data = [B1,B2,B3,B4,B5,B6,B7]

#饼图分离
Explode = (0,0,0,0,0,0.1,0.1) #第六、七个标签分离

plt.title("苹果一周销量情况(实际值)") #图形标题

def func1(Data):
        def func2(pct):
                total = sum(Data)
                val = float(round(pct*total/100.0,2)) #保留两位小数
               
                #只显示实际值
                return '{v:.2f}斤'.format(p=pct,v=val) #保留两位小数
        return func2

plt.pie(Data, labels=Labels, autopct=func1(Data),explode=Explode,shadow=True) #饼图分离+阴影

plt.legend() #显示图例(label)

plt.axis('equal')
plt.show()


脚本运行中的效果:
图片10.png

















#######

例子二十三:
在一个窗体中绘制横向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果销量情况") #图形标题

N = 5
y = np.arange(N)

x = [20, 10, 30, 25, 15] #x轴的点的值

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
Labels = [A1,A2,A3,A4,A5] #y轴的点的值

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.5,width=x,orientation="horizontal",tick_label=Labels)

plt.show() #显示图形


脚本运行中的效果:
图片1.png





#######

例子二十四:
在一个窗体中绘制横向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果销量情况") #图形标题

plt.xlabel('销量(斤)') #x轴名称
plt.ylabel('日期') #y轴名称

N = 5
y = np.arange(N)

x = [20, 10, 30, 25, 15] #x轴的点的值

A1 = 'Mon'
A2 = 'Tue'
A3 = 'Wed'
A4 = 'Thu'
A5 = 'Fri'
Labels = [A1,A2,A3,A4,A5] #y轴的点的值

Color=['red','peru'] #条形的填充颜色

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.8,width=x,orientation="horizontal",tick_label=Labels,color=Color)

plt.show() #显示图形


脚本运行中的效果:
图片2.png





#######

例子二十五:
在一个窗体中绘制横向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果销量情况") #图形标题

plt.xlabel('销量(斤)') #x轴名称
plt.ylabel('日期') #y轴名称

N = 4
y = np.arange(N)

A1 = 20
A2 = 10
A3 = 30
A4 = 25
x = [A1,A2,A3,A4] #x轴的点的值

B1 = 'Mon'
B2 = 'Tue'
B3 = 'Wed'
B4 = 'Thu'
Labels = [B1,B2,B3,B4] #y轴的点的值

Color=['red','peru','blue','yellow'] #条形的填充颜色

# height 条形的宽度, width 条形的长度
plt.bar(x=0,bottom=y,height=0.8,width=x,orientation="horizontal",tick_label=Labels,color=Color)

plt.grid(True,linestyle=':',color='red',alpha=0.6) #显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片3.png





#######

例子二十六:
在一个窗体中绘制竖向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果一周销量情况") #图形标题
plt.xlabel('日期') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

N = 7
X = np.arange(N)

Color=['red','peru']
Labels = ['Mon','Tue','Wed','Thu','Fri','Saturday','星期日']
Data = [18,20,5,15,20,15,15.8]

plt.bar(X,Data,alpha=0.8,color=Color,tick_label=Labels)

plt.grid(True,linestyle=':',color='red',alpha=0.6) #显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片4.png





#######

例子二十七:
在一个窗体中绘制竖向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果一周销量情况") #图形标题
plt.xlabel('日期') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

N = 7
X = np.arange(N)

A1 = 'red'
A2 = 'black'
A3 = 'peru'
A4 = 'orchid'
A5 = 'deepskyblue'
A6 = 'blue'
A7 = 'yellow'
Color = [A1,A2,A3,A4,A5,A6,A7]

B1 = 'Mon'
B2 = 'Tue'
B3 = 'Wed'
B4 = 'Thu'
B5 = 'Fri'
B6 = 'Saturday'
B7 = '星期日'
Labels = [B1,B2,B3,B4,B5,B6,B7]

C1 = 18
C2 = 20
C3 = 5
C4 = 15
C5 = 20
C6 = 15
C7 = 15.8
Data = [C1,C2,C3,C4,C5,C6,C7]

plt.bar(X,Data,alpha=0.8,color=Color,tick_label=Labels)

plt.grid(True,linestyle=':',color='blue',alpha=0.6) #显示网格线

plt.show() #显示图形


脚本运行中的效果:
图片5.png





#######

例子二十八:
在一个窗体中绘制并列竖向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果、梨销量情况") #图形标题
plt.xlabel('日期') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

N = 4
X = np.arange(N)

B1 = 'Mon'
B2 = 'Tue'
B3 = 'Wed'
B4 = 'Thu'
Labels = [B1,B2,B3,B4] #x轴的点的值

Apple = [52,55,63,53] #苹果的y轴的点的值
Pear = [44,66,55,41] #梨的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, Apple, bar_width,label='苹果',color='red')
plt.bar(X + bar_width, Pear, bar_width, label='梨',tick_label=Labels,color='blue')

plt.legend() #显示图例(label)

plt.show() #显示图形


脚本运行中的效果:
图片6.png





#######

例子二十九:
在一个窗体中绘制并列竖向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果、梨、香蕉销量情况") #图形标题
plt.xlabel('日期') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

N = 3
X = np.arange(N)

B1 = 'Mon'
B2 = 'Tue'
B3 = 'Wed'
Labels = [B1,B2,B3] #x轴的点的值

Apple = [52,55,63] #苹果的y轴的点的值
Pear = [44,66,55] #梨的y轴的点的值
Banana = [44,66,58] #香蕉的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, Apple, bar_width,label='苹果',color='red')
plt.bar(X + bar_width, Pear, bar_width,label='梨',color='blue')
plt.bar(X + bar_width + bar_width, Banana, bar_width, label='香蕉',tick_label=Labels,color='yellow')

plt.legend() #显示图例(label)

plt.show() #显示图形


脚本运行中的效果:
图片7.png





#######

例子三十:
在一个窗体中绘制叠加竖向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果、梨销量情况") #图形标题
plt.xlabel('日期') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

N = 4
X = np.arange(N)

B1 = 'Mon'
B2 = 'Tue'
B3 = 'Wed'
B4 = 'Thu'
Labels = [B1,B2,B3,B4] #x轴的点的值

Apple = np.array([52,55,63,53]) #苹果的y轴的点的值
Pear = np.array([44,66,55,41]) #梨的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, Apple, bar_width, label='苹果',color='red')
plt.bar(X, Pear, bar_width, label='梨',color='blue',tick_label=Labels, bottom=Apple) #苹果的值在梨的值下面

plt.legend() #显示图例(label)

plt.show() #显示图形


脚本运行中的效果:
图片8.png
笺注:通过叠加竖向条形图可以看到总量、各部分的比例情况。





#######

例子三十一:
在一个窗体中绘制叠加竖向条形图:

脚本内容:
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title("苹果、梨、香蕉销量情况") #图形标题
plt.xlabel('日期') #x轴名称
plt.ylabel('销量(斤)') #y轴名称

N = 4
X = np.arange(N)

B1 = 'Mon'
B2 = 'Tue'
B3 = 'Wed'
B4 = 'Thu'
Labels = [B1,B2,B3,B4] #x轴的点的值

Apple = np.array([52,55,63,53]) #苹果的y轴的点的值
Pear = np.array([44,66,55,41]) #梨的y轴的点的值
Banana = np.array([44,66,58,12]) #香蕉的y轴的点的值

bar_width = 0.3 #条形的宽度

plt.bar(X, Apple, bar_width, label='苹果',color='red')
plt.bar(X, Pear, bar_width, label='梨',color='blue', bottom=Apple)
plt.bar(X, Banana, bar_width, label='香蕉',color='yellow',tick_label=Labels, bottom=Apple+Pear)

plt.legend() #显示图例(label)

plt.show() #显示图形


脚本运行中的效果:
图片9.png





#######
#######
Windows卸载第三方库(matplotlib):
C:\Users\jacky\Desktop>pip3 uninstall matplotlib -y
Uninstalling matplotlib-3.3.0:
  Successfully uninstalled matplotlib-3.3.0


C:\Users\jacky\Desktop>



列出当前环境所有已经安装的第三方库的名称和其版本号:
C:\Users\jacky\Desktop>pip3 freeze
cycler==0.11.0
kiwisolver==1.3.1
numpy==1.19.5
Pillow==8.4.0
pyparsing==3.0.9
python-dateutil==2.8.2
six==1.16.0

C:\Users\jacky\Desktop>

注释:安装第三方库(matplotlib)时附带安装的一些相关依赖软件包不会被卸载。





相关文章:
Windows下Python3管理Excel表+绘图库Matplotlib
Windows下Python3管理Access+绘图库Matplotlib

Pandas+Excel+绘图库Matplotlib

返回列表