matplotlib 数据可视化基础(以折线图为例)

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

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值