matplotlib绘图库基础
本文对其中基础部分的代码做了一定解释并增加修改部分内容
'''
matplotlib是Python最常用的绘图库,在深度学习中也会经常用到,因此单独进行学习
1.一个例子
这里构建四个点,分别为(1,2.2) (2,3.3) (3,4.7) (4,5.9)
并进行最基础的展示学习
"""
#先来解释一下matplotlib的基本操作
from pylab import *
import matplotlib.pyplot as plt #导包
import numpy as np
#相当于创建四个点
x = [1, 2, 3, 4]
y = [2.2,3.3,4.7,5.9]
plt.plot(x,y) #这是借用plot函数进行作图
plt.show() #上述的plot函数是作图,show函数则是展示图
"""2.matplotlib基础函数解析
最基础函数有cos()与sin()函数
linspace函数:start表示起始值,end表示结束值,num表示取多少参考点,endpoint表示是否包含端点
"""
x = np.linspace(start = -np.pi,stop = np.pi,num = 100,endpoint = True) #这是设定了x轴的表示范围是从-π到π
c, s = np.cos(x), np.sin(x)
#利用plot函数构建两条曲线
plt.plot(x, c)
plt.plot(x, s)
#展示曲线
show()
"""2.plot函数详解
plot是图像构造函数,其参数非常重要。
基本参数如下:
plot([x], y, [fmt], data=None, **kwargs)
这里x代表x轴范围及参考点等信息,y代表函数信息
fmt是fmt = [color][marker][linestyle](颜色,点型,线型),是这三个参数的缩写,若用fmt表示只能用缩写,否则只可用全称。详细字母代表的颜色点型线型请自查
基本颜色:
============= ===============================
character color
============= ===============================
``'b'`` blue 蓝
``'g'`` green 绿
``'r'`` red 红
``'c'`` cyan 蓝绿
``'m'`` magenta 洋红
``'y'`` yellow 黄
``'k'`` black 黑
``'w'`` white 白
============= ===============================
基本点型:
character description
============= ===============================
``'.'`` point marker
``','`` pixel marker
``'o'`` circle marker
``'v'`` triangle_down marker
``'^'`` triangle_up marker
``'<'`` triangle_left marker
``'>'`` triangle_right marker
``'1'`` tri_down marker
``'2'`` tri_up marker
``'3'`` tri_left marker
``'4'`` tri_right marker
``'s'`` square marker
``'p'`` pentagon marker
``'*'`` star marker
``'h'`` hexagon1 marker
``'H'`` hexagon2 marker
``'+'`` plus marker
``'x'`` x marker
``'D'`` diamond marker
``'d'`` thin_diamond marker
``'|'`` vline marker
``'_'`` hline marker
============= ===============================
基本线型:
============= ===============================
character description
============= ===============================
``'-'`` solid line style 实线
``'--'`` dashed line style 虚线
``'-.'`` dash-dot line style 点画线
``':'`` dotted line style 点线
============= ===============================
"""
#了解后,就可以通过改变上面代码的参数来产生更多的不同的曲线
plt.plot(x, c, 'b|-')
"""3.matplotlib中绘图的默认设置
"""
from pylab import *
import numpy as np
import matplotlib.pylab as plt
# 创建一个8*6点(point)的图,并设置分辨率为80
figure(figsize=(8, 6), dpi=80)
# 创建一个新的1*1的子图,接下来的图样绘制在其中的第一块中
subplot(1, 1, 1)
# 得到坐标点(x,y)坐标
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)
# 绘制余弦曲线,使用蓝色的、连续的、宽度为2.5的线条
plot(X, C, color='blue', linewidth=2.5, linestyle='-')
# 绘制正弦曲线,使用绿色的、连续的、宽度为2.0的线条
plot(X, S, color='green', linewidth=2.0, linestyle='-')
# 设置横轴的上下限
xlim(-4.0, 4.0)
# 设置横轴记号
xticks(np.linspace(-4, 4, 9, endpoint=True), fontproperties='Times New Roman', size=20)
# 设置纵轴记号
yticks(np.linspace(-1, 1, 5, endpoint=True))
#设置横纵坐标的名称以及对应字体格式
font = {'family' : 'Times New Roman',
'weight' : 'normal',
'size' : 20,
}
# 设置横轴标签
plt.xlabel('X axis', font)
# 设置纵轴标签
plt.ylabel('Y axis', font)
# 设置图像标题
plt.title('Demo Figure', font)
# 以分辨率72来保存图片
savefig('demo.png', dpi=72)
# 在屏幕上显示
show()
"""4.设置上下限
其他设置与上面代码一致,区别就是设置界限,主要目的是美观
"""
from pylab import *
import numpy as np
# 得到坐标点(x,y)坐标
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)
x_min, x_max = X.min(), X.max()
c_min, c_max = C.min(), C.max()
s_min, s_max = S.min(), C.max()
y_min, y_max = min(c_min, s_min), max(c_max, s_max)
# 设置横纵坐标上下界的偏移量,这样能够完整的显示图像且最美观
dx = (x_max - x_min) * 0.2
dy = (y_max - y_min) * 0.2
# 设置上下限 保证四面的空缺量是一样的
xlim(x_min - dx, x_max + dx)
ylim(y_min - dy, y_max + dy)
# 绘制余弦曲线,使用蓝色的、连续的、宽度为2.5的线条
plot(X, C, color='blue', linewidth=2.5, linestyle='-')
# 绘制正弦曲线,使用绿色的、连续的、宽度为2.0的线条
plot(X, S, color='green', linewidth=2.0, linestyle='-')
show()
"""5.设置横纵坐标上需要表示的值
有多种表示方法
第一种是3中设置的,用linspace来表示
第二种是表示普通数字,只需要一个[]中填入需要表示的数字即可
第三种是表示特殊符号或函数,这时需要两个[]来表示,
"""
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
c, s = np.cos(x), np.sin(x)
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) #表示特殊公式或函数时,前面要加\,数字不用,直接在符号后面加上数字即可
yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
plt.plot(x, c)
plt.plot(x, s)
show()
"""6.选择坐标轴
一张图有四条边线,正常图片都是选择左边作为y轴,下面作为x轴
为了不显示别的边框,使用ax.spines[]选定边框,使用set_color()将选定的边框的颜色设为 none
ax.xaixs为x轴,set_ticks_position()用于从上下左右(top/bottom/left/right)四条边线中选择一个作为x轴,y轴同理
使用set_position()设置边框位置:取0时的位置。位置的所有属性包括:outward、axes、data
"""
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# 设置坐标轴gca(),获取坐标轴信息
ax = gca()
'''
使用ax.spines[]选定边框,使用set_color()将选定的边框的颜色设为 none
'''
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
'''
移动坐标轴,将bottom即x坐标轴移动到y=0的位置
'''
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
'''
将left 即y坐标轴设置到x=0的位置
'''
ax.yaxis.set_ticks_position('left') # 选定y轴
ax.spines['left'].set_position(('data', 0))
plt.show()
"""7.添加图示
具体是在plot中加入label数据来定义每条曲线具体的图示
用legend来选择显示图示的位置
"""
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c, label='cosine')
plt.plot(x, s, label='sine')
legend(loc='upper left')
show()