Matplotlib绘图基础

Matplotlib是数据可视化的基础,可以用来绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等 matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。

image-20220701100342629

1.说在前面

函数名称 作用
plt.figure 创建空白画布,指定画布大小
figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号
plt.title 添加标题
plt.xlabel 添加x轴名称
plt.ylabel 添加y轴名称
plt.xlim 指定x轴表示范围
plt.ylim 指定y轴表示范围
plt.xticks 指定x轴刻度的数目和取值
plt.yticks 指定y轴刻度的数目和取值
plt.legend 指定当前图片的图例
import matplotlib.pyplot as plt

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

2.绘制折线图

2.1 绘制单条折线图

import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
#绘制折线图
plt.plot(range(69),data['values'][:,2])
plt.show()

img

2.2 绘制多条折线图

import matplotlib.pyplot as plt
import numpy as np

#绘制折线图
x=np.linspace(0,2*np.pi,100)
y=np.sin(x)+np.random.rand(100)
plt.scatter(x,y)
plt.plot(x,y,'r')
plt.plot(x,np.sin(x)+0.5,'g')
plt.legend(['折线','sin曲线'])
plt.show()

img

2.3 指定样式绘制多条折线图

#多种数据绘制折线图
l=['r','g','b'] #颜色
m=['o','*','D'] #标记样式
for j,i in enumerate([3,4,5]):
    plt.plot(range(69),data['values'][:,i],c=l[j],marker=m[j],alpha=0.5)
plt.legend(['1','2','3'])
plt.show()

img

3.绘制散点图

matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,alpha=None,**kwargs)

参数名称 作用
x,y 接收array,表示x轴和y轴对应数据
s 接收数值或一维的array,指定点的大小
c 接收颜色或一维的array,指定点的颜色
marker 接收特定string,指定点的类型
alpha 接收0-1的小数,指定点的透明度

3.1 绘制一组散点数据

import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
print(data['values'][:,2])
'''
输出为:
[21329.9 24043.4 25712.5 29194.3 24086.4 26726.6 28333.3 31716.8 26295.0
 29194.8 31257.3 34970.3 29825.5 32537.3 35291.9 39767.4 34544.6 38700.8
 41855.0 46739.8 40453.3 44793.1 48047.8 54024.8 47078.9 52673.3 56064.7
 63621.6 57177.0 64809.6 69524.3 78721.4 69410.4 78769.0 82541.9 88794.3
 74053.1 83981.3 90014.1 101032.8 87616.7 99532.4 106238.7 119642.5
 104641.3 119174.3 126981.6 138503.3 117593.9 131682.5 138622.2 152468.9
 129747.0 143967.0 152905.3 168625.1 140618.3 156461.3 165711.9 181182.5
 150986.7 168503.0 176710.4 192851.9 161572.7 180743.7 190529.5 211281.3
 180682.7]
'''
#绘制散点图
plt.scatter(range(69),data['values'][:,2])
plt.show()

img

3.2 绘制多组散点数据

import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
print(data['values'][:,2])
'''
输出为:
[21329.9 24043.4 25712.5 29194.3 24086.4 26726.6 28333.3 31716.8 26295.0
 29194.8 31257.3 34970.3 29825.5 32537.3 35291.9 39767.4 34544.6 38700.8
 41855.0 46739.8 40453.3 44793.1 48047.8 54024.8 47078.9 52673.3 56064.7
 63621.6 57177.0 64809.6 69524.3 78721.4 69410.4 78769.0 82541.9 88794.3
 74053.1 83981.3 90014.1 101032.8 87616.7 99532.4 106238.7 119642.5
 104641.3 119174.3 126981.6 138503.3 117593.9 131682.5 138622.2 152468.9
 129747.0 143967.0 152905.3 168625.1 140618.3 156461.3 165711.9 181182.5
 150986.7 168503.0 176710.4 192851.9 161572.7 180743.7 190529.5 211281.3
 180682.7]
'''
#多种数据散点图
for i in [3,4,5]:
    plt.scatter(range(69),data['values'][:,i])
plt.legend(['1','2','3'])
plt.show()

img

4.绘制柱状图

matplotlib.pyplot.bar(left,height,width=0.8,bottom=None,hold=None,data=None,**kwargs)

参数名称 作用
left 接收array,表示x轴数据。
height 接收array,表示x轴所代表数据的数量。
width 接收0-1之间的float,指定直方图宽度,默认为0.8。
color 接收特定string或者包含颜色字符串的array,表示直方图颜色。默认为None
import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
#赋值绘图数据
num=data['values'][68,3:6]
'''
输出为:
[1908.3 3158.2 4140.6 5510.2 2015.3 3235.0 4453.8 5798.4 2147.6 3385.8
 4731.2 5925.6 2222.5 3447.2 5046.1 6254.4 2615.6 4250.5 6358.6 7679.7
 2884.0 4438.6 6527.7 7956.4 3012.7 4750.0 6937.7 8616.6 3486.4 5532.5
 8387.6 10381.5 4407.4 6892.4 9911.9 11541.5 4441.1 6987.0 10165.8 12567.9
 4944.8 7975.1 11914.4 14528.2 5767.5 9426.5 14280.8 16688.3 6687.0
 10279.8 15197.0 18738.5 7169.6 10842.3 16593.1 20724.1 7491.9 11653.4
 17675.6 21522.7 7770.4 12486.7 18087.5 22517.5 8803.0 13293.7 18569.0
 23005.0 8654.0]
'''
#绘制直方图添加数据
plt.bar(range(len(num)),num)
#给x轴标注刻度和取值
plt.xticks(range(len(num)),['1','2','3'])
plt.show()

img

5.绘制饼图

matplotlib.pyplot.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None.......)

参数名称 作用
x 接收array,表示用于绘制撇的数据
explode 接收array,表示指定项离饼图圆心为n个半径,默认为None
labels 接收array,指定每一项的名称,默认为None
color 接收特定string或者包含颜色字符串的array,表示饼图颜色
autopct 接收特定string,指定数值的显示方式为None
pctdistance 接收float,指定每一项的比例和距离饼图圆心n个半径,默认为0.6
labeldistance 接收float,指定每一项的名称和距离饼图圆心n个半径,默认为0.6
radius 接收float,表示饼图的半径,默认为1
import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
#赋值绘图数据
num=data['values'][68,3:6]
'''
输出为:
[1908.3 3158.2 4140.6 5510.2 2015.3 3235.0 4453.8 5798.4 2147.6 3385.8
 4731.2 5925.6 2222.5 3447.2 5046.1 6254.4 2615.6 4250.5 6358.6 7679.7
 2884.0 4438.6 6527.7 7956.4 3012.7 4750.0 6937.7 8616.6 3486.4 5532.5
 8387.6 10381.5 4407.4 6892.4 9911.9 11541.5 4441.1 6987.0 10165.8 12567.9
 4944.8 7975.1 11914.4 14528.2 5767.5 9426.5 14280.8 16688.3 6687.0
 10279.8 15197.0 18738.5 7169.6 10842.3 16593.1 20724.1 7491.9 11653.4
 17675.6 21522.7 7770.4 12486.7 18087.5 22517.5 8803.0 13293.7 18569.0
 23005.0 8654.0]
'''
#设置绘图区域为正方形
plt.figure(figsize=(4,4))
plt.pie(num,autopct='%.2f %%',explode=[0.1,0,0],labels=['1','2','3'],labeldistance=1.4)
plt.show()

img

import matplotlib.pyplot as plt
import numpy as np

#绘制饼图
z=np.ones(10)
plt.figure(figsize=(5,5))
plt.pie(z,autopct='%.2f%%',explode=[0.1]+[0]*9,labels=list('ABCDEFGHIJ'),labeldistance=1.1)
plt.show()

img

6.绘制箱线图

箱线图是用来表示一组或多组连续型数据分布的中心位置和散布范围的图形,因形似箱子故取名为箱线图。

在箱线图中,箱子的中间有一条线,代表了数据的【中位数】。箱子的上下底,分别是数据的【上四分位数(Q3)】和【下四分位数(Q1)】。上下边缘则代表了该组数据的【最大值】和【最小值】。有时候箱子外部会有一些点,可以理解为数据中的【异常值】

image-20221022104838343

6.1 单组数据箱线图

import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
#赋值绘图数据
num=data['values'][68,3:6]
#设置单个数据绘制箱线图
num=data['values'][:,3]
print(num)
'''
输出为:
[1908.3 3158.2 4140.6 5510.2 2015.3 3235.0 4453.8 5798.4 2147.6 3385.8
 4731.2 5925.6 2222.5 3447.2 5046.1 6254.4 2615.6 4250.5 6358.6 7679.7
 2884.0 4438.6 6527.7 7956.4 3012.7 4750.0 6937.7 8616.6 3486.4 5532.5
 8387.6 10381.5 4407.4 6892.4 9911.9 11541.5 4441.1 6987.0 10165.8 12567.9
 4944.8 7975.1 11914.4 14528.2 5767.5 9426.5 14280.8 16688.3 6687.0
 10279.8 15197.0 18738.5 7169.6 10842.3 16593.1 20724.1 7491.9 11653.4
 17675.6 21522.7 7770.4 12486.7 18087.5 22517.5 8803.0 13293.7 18569.0
 23005.0 8654.0]
'''
plt.boxplot(num)
plt.show()

img

6.2 多组数据箱线图

import matplotlib.pyplot as plt
import numpy as np

data=np.load('./data/国民经济核算季度数据.npz',allow_pickle=True)
#赋值绘图数据
#设置多个箱线图绘制在一张图中
num=(list(data['values'][:,3]),list(data['values'][:,4]),list(data['values'][:,5]))
print(num)
'''
输出为:
([1908.3, 3158.2,....,],
 [....................],
 [....................])
'''
plt.boxplot(num)
plt.show()

img

7.参考文章

Matplotlib

[Matplotlib基础知识_坚果的刻薄-CSDN博客](https://blog.csdn.net/qq_48003414/article/details/116882379#:~:text=Matplotlib是数据可视化的基础,可以用来绘制线图、散点图、等高线图、条形图、柱状图、3D,图形、甚至是图形动画等 matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。)

功能强大的箱线图,你还在敬而远之吗? - 知乎

【创作不易,望点赞收藏,若有疑问,请留言,谢谢】

posted @ 2022-07-01 11:05  东血  阅读(236)  评论(0编辑  收藏  举报

载入天数...载入时分秒...