1.1 基本用法
绘制简单一次函数直线图
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 1, 50)
y = 2 * x + 1
plt.plot(x, y)
plt.show()

1.2 figure
plt.figure() 代表建立一张图片
plt.figure() 通过num、figsize设置图片编号大小等
plt.plot() 也可以设置图像的各种参数,见代码
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y1)
plt.figure(num=3, figsize=(8, 5))
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.show()


1.3 设置坐标轴
plt.xlim()
plt.ylim()
以上函数分别设置xy轴的范围
plt.xlabel()
plt.ylabel()
以上函数分别设置xy轴的文字描述
plt.xticks()
plt.yticks()
以上函数分别设置xy轴的刻度
传入一个数组则以该数组为刻度
传入两个数组则一一对应,以后一个数组为准
ax = plt.gca()
获得当前坐标轴
ax.spines[‘right’].set_color(‘none’)
右边轴设置为无
ax.xaxis.set_ticks_position(‘bottom’)
底部轴设置为x轴,y轴同理
ax.spines[‘bottom’].set_position((‘data’, 0))
底部轴以0为原点,其余同理
具体见代码
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure(num=3, figsize=(8, 5))
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.xlim((-1, 2))
plt.ylim((-2, 3))
plt.xlabel('I am x')
plt.ylabel('I am y')
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],
[r'$really\ bad$', r'$bad$', r'$mormal$', r'$good$', r'$really\ good$'])
# 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')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.show()

1.4 legend图例
plt.legend()
画出label的标注
可以设置位置等信息,
具体见代码
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.xlim((-1, 2))
plt.ylim((-2, 3))
plt.xlabel('I am x')
plt.ylabel('I am y')
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],
[r'$really\ bad$', r'$bad$', r'$mormal$', r'$good$', r'$really\ good$'])
l1, = plt.plot(x, y2, label='up')
l2, = plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--', label='down')
plt.legend(handles=[l1, l2], labels=['aaa', 'bbb'], loc='lower right')
plt.show()

1.5 Annotation标注
在图片上标注一些文字或者箭头说明
plt.text()
在图片上加一些纯文字说明
plt.annotate()
在图片上加一些箭头符号等文字说明
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 2 * x + 1
plt.figure(num=1, figsize=(8, 5), )
plt.plot(x, y)
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')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
'''画点'''
x0 = 1
y0 = 2 * x0 + 1
plt.scatter(x0, y0, s=50, color='b')
'''画垂直虚线'''
plt.plot([x0, x0], [y0, 0], 'k--', lw=2.5)
'''画箭头和文字说明'''
plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30), textcoords='offset points',
fontsize=16,
arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.text(-3.7, 3, r'$This\ is\ the\ text$', fontdict={'size': 16, 'color': 'r'})
plt.show()

1.6 tick能见度
刻度有可能被遮挡
ax.get_xticklabels()
得到各个坐标轴的刻度
刻度可以设置各个性质
同事要注意图层顺序zorder的大小设置
zorder越大,则越在上面
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 0.1 * x
plt.figure()
plt.plot(x, y, linewidth=10,zorder=1)
plt.ylim(-2, 2)
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')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
for label in ax.get_xticklabels()+ax.get_yticklabels():
label.set_fontsize(12)
label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7))
label.set_zorder(2)
plt.show()

非常感谢莫烦老师教导,上传仅为学习交流之用,侵删
链接: https://morvanzhou.github.io/tutorials/data-manipulation/plt/1-1-why/.
&spm=1001.2101.3001.5002&articleId=105267564&d=1&t=3&u=add64dac0879400c99432c5a009279b2)
753

被折叠的 条评论
为什么被折叠?



