对于大多数人来说,使用python绘图只是为了使自己的数据可视化而已,所以就没必要专门去学习每一个函数,只要掌握本质,用哪一个知识点的时候去对应查找即可,很多人包括我自己以前也是巴不得把所有的函数都掌握完。但是不得不承认,人的记忆在时间和容量上都是有限的,所以对于工具型的函数,用的时候查一下就可以了,就比如说我们用汽车代步,没必要去了解汽车到研究汽车的人那种程度吧,会开就行!
在讲解具体的画图之前,先要牢牢记住一个概念,python是面向对象的!很多人一上来就讲plot这些,虽然照着敲会画出来,但是不能让你把画图当作说话一样简单。只要是面向对象,我们就可以用生活中的例子来辅助我们学习知识。
为了方便大家的理解,我以一个形象的例子来表达。先给你一个场景、你要欣赏一幅挂在墙上的画。figure就是墙、Axes就是画、Axis就是画的边框。你的画必须挂在墙上,你真正意义上的画是画在一张画纸上的,也就是Axies减去Axis的部分。所以我们绘图的步骤是、确定墙、画框、画纸、和画的内容。就那么简单!
# 1. 导入包这些必要的准备就是提供工具和材料
from matplotlib import pyplot as plt
import matplotlib as mpl
import numpy as np
# 防止乱码,当然你也可以从配置上设置,不过需要下载字体包,第二行是防止一些符号显示有问题
mpl.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 2. 准备数据
x = np.linspace(-3, 3, 50)
y1 = 2*x+1
y2 = x**2
# 3. 准备好墙,表明是第几面墙,并设置大小,除非你换墙,不然你以下的操作都在一面墙上
plt.figure(num=1, figsize=(8, 5))
# 4. 绘图 计算机绘图都是打点绘图,把点显示出来,并且设置线的颜色和宽度以及类型
# 调用我们导入库里面的函数,就是对象调用成员函数,值得注意的是l1后面有一个,为了后面图例给两条线先取名字
# 如果你不对画框那些进行操作的话,plot就是跟你准备好了的
l1, = plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--', label='line1')
l2, = plt.plot(x, y2, label='line1') # 默认的线会是蓝色的宽度是1的实线
# 5. 细节处理(美化图片)
#5.1 图例
plt.legend() # 这个也会有图列不过都是默认的一些值
# 这种个性化的图列,相当于先抓住那几条线,然后重新取名字,放在一个自己想要放的位置
# plt.legend(handles=[l1, l2], labels=['aaa', 'bbb'], loc='best')
#5.2 坐标轴限制
plt.xlim((-1, 2))
plt.ylim((-2, 3)) # 限定坐标轴范围
#5.3 设置横纵坐标和图的标题
plt.xlabel('x')
plt.ylabel('y') # 设置坐标轴的名称
plt.title('the tow functions') # 设置标题
#5.4 设置新的坐标轴和美化字体
new_ticks = np.linspace(-1, 2, 5) # 设置新的ticks
plt.xticks(new_ticks)
# r表示的是一种正则表达形式,空格需要转义字符才能够读出来,不然会忽略掉空格,展现出的是数学形式的字体
plt.yticks([-2, -1.8, -1, 1.22, 3],
[r'$really\ bad$', r'$bad\ \alpha$', r'$normal$', r'$good$', r'$really\ good$'])
#5.5 对画的边框重新设置
# gca = 'get current axis'拿出当前的这个轴
ax = plt.gca()
ax.spines['right'].set_color(None)
ax.spines['top'].set_color('none') # 去掉一些边框,两种写法都可以
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left') # 确定轴的名字,如确定哪个是x轴
# 可以用数据定位绑定,以助于改变位置,也可以用axes百分比来确定位置
# 也就是将x、y轴随便平移有的喜欢十字型有的喜欢口字型,这就随便你
ax.spines['bottom'].set_position(('data', 2)) # 将x轴的位置绑定在y轴的2这个位置
ax.spines['left'].set_position(('data', 2)) # 将y轴的位置绑定在x轴的0这个位置
#6. 如果再想画一张Figure就换墙
plt.figure(num=2, figsize=(8, 9))
plt.plot(x, y1)
#7. 在脚本中只有使用这个语句,图才会显示出来
plt.show()
对于画一些简单的图,以上的代码完全够了,我想说的是,它的每一个部分都是分开的,你想怎么操作就怎么操作,只有你想不到,没有python做不到!效果图如下:
你把在电脑上用python画图就想成是自己用手在画图,这样能够方便你有一个整体的把握,代码只是工具,最重的是你自己要知道怎么做,能够用专业的术语表达出你的想法,然后再网上查一下。