Python3 Matplotlib展示数据

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()

输出结果:

以上内容总结自网络,整理不易,如有帮助欢迎转发,我们下次再见!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值