Matplotlib的简单使用

1. Matplotlib的简介和安装

  • Matplotlib是Python的绘图库。它可与Numpy一起使用,提供了一种有效的MatLab开源替代方案。它也可以和图形工具包一起使用,如PyQt和wxPython。
  • pip安装Matplotlib:
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
  • Linux系统也可以使用Linux包管理器来安装:
    • Debain/Ubantu:
    sudo apt-get install python-matplotlib
    
    • Fedora/Redhat:
    sudo yum install python-matplotlib
    
  • 安装完后,你可以使用下面命令来查看是否安装了matplotlib模块:
python -m pip list
# 或直接
pip list

2. Matplotlib的简单使用

1. 简单实例

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(1, 11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x, y)
plt.show()

运行结果:
在这里插入图片描述

  • 以上示例中,np.arange()函数创建x轴上的值。y轴上的对应值存储在另一个数组对象y中。这些值使用matplotlib软件包的pyplot子模块的plot()函数绘制。
  • 图形由show()函数显示。

2. 图形上显示中文(下载字体)

import numpy as np
from matplotlib import pyplot as plt
import matplotlib

# fname为下载的字体库路径,注意是SourceHanSansSC-Bold.otf字体的路径
zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf")

x = np.arange(1, 11)
y = 2 * x + 5
plt.title("测试", fontproperties=zhfont1)

# fontproperties设置中文显示。fontsize设置字体大小
plt.xlabel("x轴", fontproperties=zhfont1)
plt.ylabel("y轴", fontproperties=zhfont1)
plt.plot(x, y)
plt.show()

运行效果如下:
在这里插入图片描述

  • 此外,我们还可以使用系统的字体。

3. 图形上显示中文(使用系统字体)

from matplotlib import pyplot as plt
import matplotlib
a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:    # 查看都有哪些系统字体
    print(i)
    
# 以上代码可以打印出font_manager的ttflist中所有的注册的名字,找一个看中文字体,例如:STFangsong(仿宋),然后设置下面的系统字体:
plt.rcParams['font.family']=['STFangsong']    # 使用系统的字体——仿宋

# 修改上一示例的代码:
import numpy as np
x = np.arange(1, 11)
y = 2 * x + 5
plt.title("测试")
# fontproperties设置中文显示。fontsize设置字体大小
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.plot(x, y)
plt.show()

运行结果如下:
在这里插入图片描述

4. 可向plot()函数添加的格式化字符

  • 作为线形图的替代,可以通过向plot()函数添加格式化字符串来显示离散值。可以使用以下格式化字符:
字符描述
‘-’实线样式
‘–’短横线样式
‘-.’点划线样式
‘:’虚线样式
‘.’点标记
‘,’像素标记
‘o’圆标记
‘v’倒三角标记
‘^’正三角标记
‘<’左三角标记
‘>’右三角标记
‘1’下箭头标记
‘2’上箭头标记
‘3’左箭头标记
‘4’右箭头标记
‘s’正方形标记
‘p’五边形标记
‘*’星形标记
‘h’六边形标记1
‘H’六边形标记2
‘+’加号标记
‘x’X标记
‘D’菱形标记
‘d’窄菱形标记
‘|’竖直线标记
‘_’水平线标记

5. 颜色的缩写

字符颜色
‘b’蓝色
‘g’绿色
‘r’红色
‘c’青色
‘m’品红色
‘y’黄色
‘k’黑色
‘w’白色

6. 用点替换线条

  • 要显示圆来代表点,而不是上面示例中的线,需要使用ob作为plot()函数中的格式字符串。
import numpy as np
from matplotlib import pyplot as plt

x = np.arange(1, 11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x, y, "ob")
plt.show()

运行结果如下:
在这里插入图片描述

7. 绘制正弦波

  • 以下示例使用matplotlib生成正弦波图。
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线上点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.title("sine wave form")
# 使用matplotlib来绘制点
plt.plot(x, y)
plt.show()

运行结果如下:
在这里插入图片描述

8. subplot()

  • subplot()函数允许你在同一图中绘制不同的东西。

示例:绘制正弦和余弦值

# 绘制正弦和余弦
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立subplot网格,高为2,宽为1
# 激活第一个subplot
plt.subplot(2, 1, 1)
# 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sine')
# 将第二个subplot激活,并绘制第二个图像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 展示图像
plt.show()

运行结果:
在这里插入图片描述

9. bar()

  • pyplot子模块提供bar()函数来生成条形图。
  • 以下示例生成两组x和y的条形图。
from matplotlib import pyplot as plt
x = [5, 8, 10]
y = [12, 16, 6]
x2 = [6, 9, 11]
y2 = [6, 15, 7]
plt.bar(x, y, align='center')
plt.bar(x2, y2, color='g', align='center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()

运行结果如下:
在这里插入图片描述

10. numpy.histogram()

  • numpy.histogram()函数是数据的频率分布的图形表示。水平尺寸相等的矩形对应于类间隔,称为bin,变量height对应于频率。
  • numpy.histogram()函数将输入数组和bin作为两个参数。bin数组中的连续元素用作每个bin的边界。
import numpy as np

a = np.array([22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27])
np.histogram(a, bins=[0, 20, 40, 60, 80, 100])
hist, bins = np.histogram(a, bins=[0, 20, 40, 60, 80, 100])
print(hist)
print(bins)

运行结果:

[3 4 5 2 1]
[  0  20  40  60  80 100]

11. plt()

  • matplotlib可以将直方图的数字表示转换为图形。pyplot子模块的plt()函数将包含数据和bin数组作为参数,并转换为直方图。
from matplotlib import pyplot as plt
import numpy as np

a = np.array([22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27])
plt.hist(a, bins=[0, 20, 40, 60, 80, 100])
plt.title("histogram")
plt.show()

运行结果:
在这里插入图片描述

参考文章:
https://www.runoob.com/numpy/numpy-matplotlib.html

更多教程:
https://www.runoob.com/matplotlib/matplotlib-tutorial.html

https://www.runoob.com/w3cnote/matplotlib-tutorial.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值