matplotlib是数据分析三剑客之一
其中需要理解figure(画布)、axes(坐标系)、axis(坐标轴)三个基本概念,画布就是创建一个画图的基本区域,
坐标系就是一个画布中分割为多个小的画图区域,称为坐标系(例如一个画布中可以同时放三张图),
而坐标轴就是具体每一个画图的小区域的x轴,y轴,z轴了。
以下代码部分来自公众号‘数据分析与统计学之美’,号主也是相当的厉害,还经常分享小福利,有需要的可以加他。
导入相关库
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
# 排除警告信息
import warnings
warnings.filterwarnings("ignore")
# 打印版本信息
display(np.__version__)
display(pd.__version__)
display(mpl.__version__)
# matplotlib画图常见参数设置
mpl.rcParams["font.family"] = "SimHei" # 设置字体
mpl.rcParams["axes.unicode_minus"]=False # 用来正常显示负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
# 嵌入式显示图形
%matplotlib inline
画图示例
import matplotlib as mpl
import matplotlib.pyplot as plt
x= [i for i in range(20)]
y=[2*i+2 for i in range(20)]
# print(x)
# print(y)
plt.plot(x,y)
plt.show()
在一个画布中创建两个坐标系里画两张图,合并为一张图
import matplotlib as mpl
import matplotlib.pyplot as plt
figure = plt.figure()
# 获取每个位置的axes对象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,1)
axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
figure.show()
这里其实可以直接这样,在一个坐标系里作两张图
plt.plot([1,3,5,7],[4,9,6,8])
plt.plot([1,2,4,5],[8,4,6,2])
plt.show()
效果跟上面是一样的
如图所示
在一个画布figure里面创建两个坐标系axes,分开作两张图
figure = plt.figure()
# 获取每个位置的axes对象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,2)
该函数的第一个参数代表子图的总行数,第二个参数代表子图的总列数,第三个参数代表活跃区域。
axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
figure.show()
如图所示
抛物线绘图
import matplotlib as mpl
import matplotlib.pyplot as plt
x= [i for i in range(-10,10)]
y=[2*i*i+2 for i in range(-10,10)]
# print(x)
# print(y)
plt.plot(x,y)
plt.show()
也可以这样
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)#-3,3中间50个点。
y1=2*x+1
y2=x**2
plt.figure(num=3,figsize=(8,5))#下面都是这张figure中的,编号,大小横轴,和纵轴,函数也可以显示在同一个图片中,
plt.plot(x, y2, color='black', linewidth=1.5, linestyle='--') # 风格是虚线,线的的u宽度。颜色。
plt.plot(x, y1, color='red', linewidth=1.5)
plt.show()
#https://blog.csdn.net/abc13526222160/article/details/85264865
正弦函数绘图
x = np.linspace(0, 2 * np.pi, 50)
y = np.sin(x)
plt.plot(x, y)
plt.plot(x, y*2)
plt.show()
效果太美
x = np.linspace(0, 2 * np.pi, 50)
ax1 = plt.subplot(2, 2, 1) # (行,列,活跃区)
plt.plot(x, np.sin(x), 'r')
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴
plt.plot(x, 2 * np.sin(x), 'g')
ax3 = plt.subplot(2, 2, 3)
plt.plot(x, np.cos(x), 'b')
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
plt.plot(x, 2 * np.cos(x), 'y')
plt.show()
#https://blog.csdn.net/csdnsevenn/article/details/82731538?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-3.nonecase