第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制
第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数
import numpy
from matplotlib import pyplot
data = numpy.load('./国民经济核算季度数据.npz',allow_pickle=True)
# 遍历data对象,获得键
# columns
# values
for i in data:
print(i)
# 根据键获得键值
columns = data['columns']
print(columns)
values = data['values']
print(values)
# 创建画布
fig = pyplot.figure(figsize=(10,8),dpi=80)
#在画布中创建多个子图
# 参数1 子图的行数
# 参数 子图的列数
# 参数 第几个子图
# 默认不支持中文,需要配置RC 参数
pyplot.rcParams['font.sans-serif']='SimHei'
#设置字体之后不支持负号,需要去设置RC参数更改编码
pyplot.rcParams['axes.unicode_minus']=False
#调整子图之间的间距
fig.subplots_adjust(wspace=0.5,hspace=0.5)
# # # 第一个子图开始--------------------------
fig.add_subplot(2,1,1)
# 绘图
# 构建坐标
x = values[:,0]
y1 = values[:,3]
y2 = values[:,4]
y3 = values[:,5]
#绘图
pyplot.plot(x,y1)
pyplot.plot(x,y2)
pyplot.plot(x,y3)
#增加标题
pyplot.title('2000-2017年各个产业与行业生产总值折线图')
# 添加横轴,纵轴的标题
pyplot.ylabel('生产总值(亿元)')
# 增加图例
legend = [i[:4] for i in columns[3:6]]
pyplot.legend(legend,loc=2)
# # # 第二个子图开始--------------------------
fig.add_subplot(2,1,2)
# 绘图
# 构建坐标
x = values[:,1]
y1 = values[:,6]
y2 = values[:,7]
y3 = values[:,8]
y4 = values[:,9]
y5 = values[:,10]
y6 = values[:,11]
y7 = values[:,12]
y8 = values[:,13]
y9 = values[:,14]
pyplot.plot(x,y1)
pyplot.plot(x,y2)
pyplot.plot(x,y4,linestyle='--')
pyplot.plot(x,y5,linestyle='-.')
pyplot.plot(x,y6,linestyle=':')
pyplot.plot(x,y7,linestyle='-')
pyplot.plot(x,y8,linestyle='--')
pyplot.plot(x,y9,linestyle='-.')
# 添加横轴,纵轴的标题
pyplot.ylabel('生产总值(亿元)')
pyplot.xlabel('年度(季度)')
# 增加图例
legend = [i[:2] for i in columns[6:14]]
pyplot.legend(legend,loc=2)
# 重写设置x轴的值
xticks= values[:,1]
pyplot.xticks(x[::4],xticks[::4],rotation=45,horizontalalignment='right',fontsize=10)
# 保存图片
pyplot.savefig('国民经济核算季度数据折线图.png')
# 展示图片
pyplot.show()
直方图
import numpy
from matplotlib import pyplot
# 创建画布
pyplot.figure()
#绘图
hight = numpy.array([150,151,156,159,167,165,169,175,174,178,180,182,183,184,159,168])
# bins = 4 让系统默认进行分组
# 可以自定义进行分组--等宽分组
# 计算最大值与最小值差值---极差
ptp = hight.max()-hight.min()
# 计算步长,并向上去整
step = numpy.ceil(ptp/4)
# 设置'等宽'bins
bins = numpy.arange(hight.min(),hight.max()+step,step)
pyplot.hist(hight,bins=bins,color='r',edgecolor='#00ccff')
#设置x刻度
pyplot.xticks(bins)
#增加网格曲线
pyplot.grid(True,axis='y',alpha=0.3)
pyplot.show()
柱状图
import numpy
from matplotlib import pyplot
"""
直方图 与柱状图 区别
直方图:---数据的分布情况,横轴是数据范围,纵轴是落在范围内的频数,适用于大数据
柱状图:---统计类别数据的数量,横轴是数据的类别,纵轴是类别的频数,适用于少量数据,而且类别不宜过多
"""
# 加载数据
data = numpy.load('国民经济核算季度数据.npz',allow_pickle=True)
columns = data['columns']
values = data['values']
# 创建画布
pyplot.figure()
# 默认不支持中文,需要配置RC 参数
pyplot.rcParams['font.sans-serif']='SimHei'
# 设置字体之后不支持负号,需要去设置RC参数更改编码
pyplot.rcParams['axes.unicode_minus']=False
# 绘图
x = numpy.arange(1,4)
y = values[0,3:6]
# 参数 x 类别数的标号
# 参数y 各个类别所对应的类别的数量
# width 是代表类别之间间距的百分之多少
# color 代表柱子的颜色,可以传带个字符串,也可以传一个列表
pyplot.bar(x,y,width=0.8,color=['r','b','#00ffcc'])
#设置刻度
pyplot.xticks(x,['A','B','C'])
# 标注
for i,j in zip(x,y):
print(i,j)
#i, j + 100 文本放位置置的
pyplot.text(i, j+100, "%.2f亿元"%j, horizontalalignment='center')
pyplot.show()
import numpy
import random
from matplotlib import pyplot
# 创建画布
pyplot.figure()
# 绘图
# 构建 x 与 y 坐标
x = numpy.arange(1,6)
y = numpy.random.randn(5)
# 绘制散点图---比折线图严格,x,y维数必须一致
# s 点的大小,可以传一个,也可以传一个数组,会从前往后依次使用大小
# c 点的颜色 ,可以传一个,也可以传一个array,会从前往后依次使用大小
# marker 点的形状---,只能传一个字符串"*"
# alpha --透明度
pyplot.scatter(x,y,s=[20,30,40,50,60,70],c=['r','g','pink','y','r'],marker='*',alpha=1)
pyplot.show()
import numpy
from matplotlib import pyplot
# 场景:
# 部分与整体的关系
# 部分与部分的关系
# 部分不能太多,部分不能太多
# 加载数据
data = numpy.load('国民经济核算季度数据.npz',allow_pickle=True)
columns = data['columns']
values = data['values']
# 创建画布
pyplot.figure()
# 默认不支持中文,需要配置RC 参数
pyplot.rcParams['font.sans-serif']='SimHei'
# 设置字体之后不支持负号,需要去设置RC参数更改编码
pyplot.rcParams['axes.unicode_minus']=False
# 2、绘图
# x 绘制饼图的真实数据
# explode 部分距离饼心的距离,即缝隙
# labels 饼图各部分的名称
# labeldistance -名称距离圆心的距离远近
# color -饼图各部分的颜色,可以是一个,也可以传一个数组
# autopct ---占比的显示 以%.2f%%形式设置
# pctdistance ---显示的占比数据距离圆心的远近
# radius 饼的半径
# shadow 设置阴影
# 设置数据【最后一行的3,4,5列】
x = values[-1,3:6]
# 设置缝隙----长度必须和x一致
explode = (0.01,0.01,0.01)
# 设置label
labels = [i[:4] for i in columns[3:6]]
#设置颜色
color = ['r','g','y']
#设置显示位数 %%【防止%转义】
autopct = '%.2f%%'
pyplot.pie(x,explode=explode,labels=labels,colors=color,autopct=autopct,shadow=True)
# 将饼子捏圆
pyplot.axis('equal')
pyplot.show()