1.创建画布与创建子图
第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图 上绘制多个图形的情况。
最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
plt.figure
创建一个空白画布,可以指定画布大小,像素。
figure.add_subplot
创建并选中子图,可以指定子图的行数,列数,与选中图片编号。
2.添加画布内容
第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以 先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
plt.title
在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数。
plt.xlabel
在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数。
plt.ylabel
在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数。
plt.xlim
指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。 plt.ylim 指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.xticks
指定x轴刻度的数目与取值。
plt.yticks
指定y轴刻度的数目与取值。
plt.legend
指定当前图形的图例,可以指定图例的大小、位置、标签。
3.存储展示图形
第三部分主要用于保存和显示图形。
plt.savafig
保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数。
plt.show
在本机显示图形。
4.设置pyplot的动态参数
pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。
在pyplot中几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度、颜色和样式、坐标轴、坐标和网格属性、文本、字体等。
线条的常用rc参数名称、解释与取值:
linewidth
线条宽度 取0-10之间的数值,默认为1.5。
linestyle
线条样式 可取“-”“–”“-.”“:”四种。默认为“-”。
marker
线条上点的形状 可取“o”“D”“h”“.”“,”“S”等20种,默认为None。
markersize
点的大小 取0-10之间的数值,默认为1。
常用线条类型解释:
linestyle取值为:
- 实线
-. 点线
-- 长虚线
: 短虚线
线条标记解释:
marker取值: 意义:
‘o’ 圆圈
‘.’ 点
‘D’ 菱形
‘s’ 正方形
‘h’ 六边形1
‘*’ 星号
‘H’ 六边形2
‘d’ 小菱形
‘-’ 水平线
‘v’ 一角朝下的三角形
‘8’ 八边形
‘<’ 一角朝左的三角形
‘p’ 五边形
‘>’ 一角朝右的三角形
‘,’ 像素
‘^’ 一角朝上的三角形
‘+’ 加号
‘\’ 竖线
‘None’ 无
‘x’ X
常用RC参数设置:
color=‘r’, linestyle=’:’, linewidth=1.2, marker="*", markersize=7, markerfacecolor=‘b’, markeredgecolor=‘g’
支持中文
:
plt.rcParams['font.sans-serif']='SimHei'
支持负号
:
plt.rcParams['axes.unicode_minus']=False
示例1:成都下周天气走势图:
import matplotlib.pyplot as plt
import numpy as np
# 1\创建画布
plt.figure()
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False
# 2、绘图
# (x,y)
# x---日期
# y---天气温度
x = np.arange(1,8,1)
y = [23,25,26,28,31,25,30]
# 绘图
plt.plot(x,y,color='r', linestyle=':', linewidth=1.2, marker="*", markersize=7, markerfacecolor='b', markeredgecolor='g')
# 增加标题
plt.title("成都下周天气走势折线图")
# 增加轴名称
plt.xlabel("日期")
plt.ylabel("温度/℃",rotation= 0,horizontalalignment='right')
xticks=["周一","周二","周三","周四","周五","周六","周日"]
# 增加刻度
# 参数1 需要替换的值
# 参数2 与参数1 一一对应要进行替换的中文值
plt.xticks(x,xticks)
yticks= np.arange(0,36,5)
# 修改y轴刻度
plt.yticks(yticks)
# 进行循环标注
# zip(x,y) 打包
for i,j in zip(x,y):
# 参数1 位置的横坐标
# 参数2 位置的纵坐标
# 参数3 标记的内容
plt.text(i,j+1,"%d℃"%j,horizontalalignment='center')
# plt.text()
# 增加图例
plt.legend(['成都温度走势'],loc=3)
# 保存图片
plt.savefig("./成都下周天气走势图.png")
# 3、展示
plt.show()
结果如下:
示例2:折线图绘制:
import matplotlib.pyplot as plt
import numpy as np
# 1、创建画布
plt.figure()
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False
# 2、绘图---折线图
# (x,y)
# np.pi π
x = np.arange(0, 2 * np.pi,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘图
# color ---线的颜色
# linestyle ---线型
# linewidth ---线宽
# marker ---点的形状
# markersize --点的大小
# markerfacecolor ---点的填充色
# markeredgecolor --点的边缘色
plt.plot(x,y1,color='r', linestyle=':', linewidth=1.2, marker="*", markersize=7, markerfacecolor='b', markeredgecolor='g')
plt.plot(x,y2)
# 所有修饰 必须放置在绘图之后--
# 因为有的修饰必须放在绘图之后,
# 有的前后位置无所谓,为了方便大家记忆,全部放到绘图之后
# 增加标题
plt.title("0-2π的sin图")
# 增加轴名称
# 增加x轴名称 增加y轴名称
plt.xlabel("x轴")
# horizontalalignment 水平位置
# rotation 转过角度
plt.ylabel("y轴",rotation=0,horizontalalignment='right')
# 增加图例 loc 放置的位置
plt.legend(["y=sinx","y=cosx"],loc='best')
# 保存图片
plt.savefig("./0-2π的sin图.png")
# 3、图形展示
plt.show()
结果如下:
示例3:各个产业生产总值走势折线图
import matplotlib.pyplot as plt
import numpy as np
#加载数据
data = np.load("./国民经济核算季度数据.npz")
# print(data)
# 获取key
# for key in data:
# print(key)
columns = data['columns']
values = data['values']
print("columns:\n",columns)
print("values:\n",values)
#1、创建画布
# figsize 画布尺寸 dpi --像素
plt.figure(figsize=(20,8),dpi=80)
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False
# 2、绘图
# x---时间---序号
# y ---第一产业、第二产业、第三产业的总值
x = values[:,0]
#
y1 = values[:,3]
y2 = values[:,4]
y3 = values[:,5]
# 绘图
plt.plot(x,y1) # rc参数自己去设置一下
plt.plot(x,y2)
plt.plot(x,y3)
# 增加标题
plt.title("2000-2017年各产业季度生产总值折线图")
#增加轴名称
plt.ylabel("生产总值(亿元)")
# 增加x刻度
plt.xticks(x[::4],values[:,1][::4],rotation=45,horizontalalignment='right')
# plt.text()
# 增加图例
plt.legend([tmp[:4] for tmp in columns[3:6]])
#
plt.savefig("./2000-2017年各产业季度生产总值折线图.png")
# 3、展示
plt.show()
结果如下:
示例4:生产总值走势折线图子图
import matplotlib.pyplot as plt
import numpy as np
#加载数据
data = np.load("./国民经济核算季度数据.npz")
columns = data['columns']
values = data['values']
print(columns)
print(values)
# 绘图
# 1、创建画布
fig = plt.figure(figsize=(20,10))
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False
# 2、绘图
# 参数1 行数
# 参数2 列数
# 参数3 指定绘制的图形序号
fig.add_subplot(2,1,1)
x = values[:,0]
#
y1 = values[:,3]
y2 = values[:,4]
y3 = values[:,5]
# 绘图
plt.plot(x,y1) # rc参数自己去设置一下
plt.plot(x,y2)
plt.plot(x,y3)
# 增加标题
plt.title("2000-2017年各产业季度生产总值折线图")
#增加轴名称
plt.ylabel("生产总值(亿元)")
# 增加x刻度
# plt.xticks(x[::4],values[:,1][::4],rotation=45,horizontalalignment='right')
plt.xticks(x[::4],np.arange(1,values.shape[0]+1)[::4])
# plt.text()
# 增加图例
plt.legend([tmp[:4] for tmp in columns[3:6]])
fig.add_subplot(2,1,2)
x = values[:,0]
#
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]
# 绘图
plt.plot(x,y1) # rc参数自己去设置一下
plt.plot(x,y2)
plt.plot(x,y3)
plt.plot(x,y4)
plt.plot(x,y5)
plt.plot(x,y6)
plt.plot(x,y7)
plt.plot(x,y8)
plt.plot(x,y9)
# 增加标题
# plt.title("2000-2017年各产业季度生产总值折线图")
#增加轴名称
plt.ylabel("生产总值(亿元)")
# 增加x刻度
plt.xticks(x[::4],values[:,1][::4],rotation=45,horizontalalignment='right')
# plt.text()
# 增加图例 fontsize 大小
plt.legend([tmp[:2] for tmp in columns[6:]],fontsize=8,loc=2)
# 保存图片
plt.savefig("./2000-2017年各产业、行业季度生产总值折线图.png")
# 3、展示
plt.show()
结果如下:
参考:
常用RC参数设置:
color=‘r’, linestyle=’:’, linewidth=1.2, marker="*", markersize=7, markerfacecolor=‘b’, markeredgecolor=‘g’
支持中文:
plt.rcParams[‘font.sans-serif’]=‘SimHei’
支持负号:
plt.rcParams[‘axes.unicode_minus’]=False
更多线性、颜色参考网址:
https://www.cnblogs.com/darkknightzh/p/6117528.html