matplotlib 是一个 Python 库,用于创建各种类型的图表和可视化。它提供了一个类似于 MATLAB 的绘图界面,使用户能够轻松地绘制线图、散点图、直方图、饼图等各种图表类型。matplotlib 可以在 Python 脚本、IPython shell、Jupyter Notebook 等环境中使用,并且具有高度的定制性,用户可以调整图表的各个方面,如颜色、线条样式、标签等。因其功能强大且易于使用,成为了 Python 中最受欢迎的绘图库之一。
1.用Matplotlib展示简单图表
使用 NumPy 和 Matplotlib 库来生成一个包含正弦和余弦函数的简单图表。
代码示例:
import numpy as np # 导入NumPy库并将其重命名为np
import matplotlib.pyplot as plt # 导入Matplotlib库中的pyplot模块并重命名为plt
# # 使用NumPy中的linspace函数生成从-π到π之间的256个等间距数据点并将其存储在变量X中
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
# 使用NumPy中的cos函数和sin函数分别计算X中每个点的余弦值和正弦值,并将结果存储在C和S中
C,S = np.cos(X), np.sin(X)
plt.plot(X,C) # 绘制余弦函数,其中X作为横坐标,C为纵坐标
plt.plot(X,S) # 绘制正弦函数,X作为横坐标,S为纵坐标
plt.show() # 显示绘制的图表
输出结果:
2.用Matplotlib展示带标签的图表
第一个例子只是简单地展示了正余弦函数曲线和x,y坐标轴,接下来创建一个带图表标题、图表标签、坐标轴标签和图例的图表。
代码示例:
import numpy as np
import matplotlib.pyplot as plt
# 从Matplotlib中的字体管理器模块导入FontProperties类
from matplotlib.font_manager import FontProperties
# 创建一个字体属性对象,指定字体文件的路径和大小,这里使用的是宋体字体,字号为14
font = FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)#C:\WINDOWS\Fonts
#创建一个图形对象,并设置其大小为宽度8英寸,高度6英寸,分辨率为80像素/英寸。
plt.figure(figsize=(8,6), dpi=80)
#创建一个网格,设置其编号为 1x1 的第一个图
plt.subplot(111)
# 使用NumPy的linspace函数生成从-π到π之间的256个等间距的数据点,并将其存储在X中
X = np.linspace(-np.pi, np.pi,256, endpoint=True)
C,S=np.cos(X),np.sin(X)
# 设置线条颜色为蓝色,线宽为1.0,线型为实线,并设置图例标签为'cos'
plt.plot(X,C,color='blue',linewidth='1.0',linestyle='-',label='cos')
# 设置线条颜色为绿色,线宽为1.0,线型为实线,并设置图例标签为'cos'
plt.plot(X,S,color='green',linewidth='1.0',linestyle='-',label='sin')
# 设置 X 轴的范围为 -4 到 4
plt.xlim(-4.0,4.0)
## 设置X轴刻度的位置为-4到4的等间距刻度,共9个
plt.xticks(np.linspace(-4,4,9,endpoint=True))
# 设置Y轴的范围
plt.ylim(-1.0,1.0)
#设置Y轴的间距
plt.yticks(np.linspace(-1,1,5,endpoint=True))
#设置一些图标
plt.title('二维坐标系',fontproperties=font) # 设置图表的标题为'二维坐标系',并使用宋体
plt.xlabel('X轴',fontproperties=font) # 设置x轴的标签为'X轴'
plt.ylabel('Y轴',fontproperties=font) # 设置y轴的标签为'Y轴'
plt.legend(loc='upper left',frameon=True) # 在图表中添加图例,位置在左上角,并显示图例框
plt.show() # 显示绘制的图表
输出结果:
3.绘制散点图
使用 NumPy 生成两个包含随机数的数组X和Y,这些随机数服从均值为 0,标准差为1的正态分布(也称高斯分布)。然后使用 Matplotlib 的 scatter 函数将这些点绘制在二维平面上。
代码示例:
import numpy as np
import matplotlib.pyplot as plt
n = 1024
X = np.random.normal(0,1,n) # 使用NumPy的random.normal函数生成一个包含1024个随机数的数组X,这些随机数服从均值为0,标准差为1的正态分布
Y = np.random.normal(0,1,n)
plt.scatter(X,Y) # 使用scatter函数绘制散点图,X轴上为X数组的值,Y轴上为Y数组的值,它们一一对应一个散点。即将X和Y数组中的每个相同索引的元素看作一个点的坐标,并在二维平面上绘制出来
plt.show() # 显示绘制的散点图
输出结果:
4.绘制柱状图
使用 NumPy 生成两组数据 Y1 和 Y2,并使用Matplotlib的bar函数将它们绘制成柱状图,同时在每个柱上方标注了对应的数值。
代码示例:
import numpy as np
import matplotlib.pyplot as plt
n = 12 # 定义一个变量 n,表示要生成的数据点的数量
X = np.arange(n) # # 用NumPy的 arange 函数生成一个包含n个元素的数组X,表示x轴上的坐标点,从0到11,[ 0 1 2 3 4 5 6 7 8 9 10 11]
# 生成第一组数据Y1,这些数据通过将随机数乘以一个逐渐减小的系数来生成,从而使得数据逐渐减小。这里使用了NumPy的random.uniform函数生成位于[0.5, 1.0) 区间内的均匀分布的随机数
Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
# 使用Matplotlib的bar函数绘制第一组数据的柱状图,其中facecolor参数设置柱体颜色为浅蓝色,edgecolor参数设置边框颜色为白色
plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
# 使用bar函数绘制第二组数据的柱状图,但是Y2取负值,使得柱体朝向下方,并且设置柱体颜色为浅红色
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
for x,y in zip(X,Y1): # 使用zip函数将X和Y1中的对应元素打包成元组,并遍历这些元组
# 在每个柱状图的顶部绘制对应的数值,x+0.4是横坐标,y+0.05是纵坐标,'%.2f' %y表示将y的值格式化为保留两位小数的字符串,ha参数设置水平对齐方式为居中,va参数设置垂直对齐方式为底部
plt.text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
for x,y2 in zip(X,Y2):
plt.text(x-0.05, -y2-0.1, '%.2f' % y2, ha='center', va= 'bottom')
plt.ylim(-1.25,+1.25) # 设置y轴的取值范围为-1.25到+1.25
plt.show()
输出结果:
5. 绘制函数 y = 1 / (1 + e^(-x)) 的曲线图
代码示例:
import numpy as np
import matplotlib.pyplot as plt
# 使用NumPy的linspace函数生成一个从-30到30的等间距的包含多个点的数组x,这些点用于表示x轴上的坐标
x=np.linspace(start=-30,stop=30,endpoint=True)
y=1/(1+np.e**-x) # 计算出Logistic函数的值
plt.figure(figsize=(10,4)) # 大小为宽度10英寸,高度4英寸
plt.plot(x,y,color='red',linewidth=2)
plt.show()
输出结果:
以上内容总结自网络,整理不易,如有帮助欢迎转发,我们下次再见!