matplotlib的基本用法整理
-
matplotlib是一个python中数据可视化的强大的库,可以制作二维三维以及动态变化的图表
-
plt.show()每调动一次,就会清空之前做的一些设置,包括对坐标轴范围和刻度的设置,已经坐标轴标签的设置
画直线图
# 导入matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,15,50)
y = 2*x
plt.plot(x,y)
plt.show()
将多个函数画在同一个图上
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,15,50) # x的范围是0到15,被分成了50份
y1 = x*x
y2 = x*x*x
y3 = 2+3*x
plt.plot(x,y1) # 添加第一个函数
plt.plot(x,y2) # 添加第二个函数
plt.plot(x,y3) # 添加第三个函数
plt.show()
设置线条的样式和颜色以及图片大小
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,15,50)
y = 2*x*x
# num = 2表示图片的编号是2
# figsize = (8,5)表示图片的长宽
# plt.figure()就是创建了一个图片对象
plt.figure(num = 2,figsize =(8.5) )
# color可修改颜色,linestyle可修改样式
plt.plot(x,y,color = 'red',linestyle = '--')
plt.show()
设置坐标轴
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,15,50)
y = 2*x*x+7
# 设置x 和 y 轴在图片上的范围
plt.xlim(-3,6)
plt.ylim(7,20)
# 取消右边和上面的坐标轴
gca = 'get current axis'
ax = plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 设置坐标轴的标签
plt.xlabel('x')
plt.ylabel('y')
# 设置坐标原点
# 实现将(0,-1)设为坐标原点
# 设置y轴上-1为坐标原点的y点,把x轴放置再-1处
ax.spines['bottom'].set_position(('data',-1)) # 也可以是('axes',0.1)后面是百分比,相当于定位到10%处
# 设置x轴上0为坐标原点的x点,将y轴移置0处
ax.spines['left'].set_position(('data',0))
# 设置x轴的刻度
new_ticks = np.linspace(-3,6,20)
plt.xticks(new_ticks)
# 设置y轴的刻度
plt.yticks([7,10,15,17],['normal','great','brilliant','best'])
图与子图
- 用subplot()方法
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,20,50)
#创建单个的子图
#plt.subplot(2, 2, 1)表示将一个图片划分为2*2的区域,ax1在四个区域中的第一个,以此类推
# 创建子图后,ax1就可以和之前单独的一个图片一样进行绘制
ax1 = plt.subplot(2, 2, 1)
ax2 = plt.subplot(2, 2, 2)
ax3 = plt.subplot(2, 2, 3)
ax1.plot(x,np.sin(x))
ax2.plot(x,np.sin(x),color = 'red')
ax3.plot(x,np.sin(x),color = 'orange')
plt.show()
- 用subplots方法
subplots其实和subplot很像,只不过subplots是一次性创建很多个子图
plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
部分参数介绍:
nrows : 行数,默认是1
ncols : 列数,默认是1
sharex与sharey : 是否共享x轴与y轴
x = np.linspace(0,20,50)
# 创建一个figure和一个子图(subplot)
fig,ax = plt.subplot()
ax.plot(x,np.sin(x))
plt.show()
# 创建两个子图
fig,(ax1,ax2) = plt.subplot(2,1,sharey = True)
ax1.plot(x,np.sin(x))
ax2.scatter(x,np.sin(x))
plt.show() # 图二
# 创建四个子图
x = np.linspace(0,20,50)
y = np.sin(x)
fig,axes = plt.subplots(2,2,sharex = True,sharey = True)
axes[0,0].plot(x,y)
axes[0,1].scatter(x,y)
axes[1,0].bar(x,y)
plt.show() # 图三
图二
图三
legend
我们可以为我们的线条添加标注
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,20,50)
y = np.sin(x)
plt.plot(x,y,label = 'sinx',loc = 'best')
plt.legend()
plt.show()
之后有用到的再进行补充
这是另外一个老哥写的,整理的很有逻辑,也贴一下