python3-matplotlib基本使用(以折线图为例)

1、什么是matplotlib

Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。
Matplotlib 是 Python 中类似 MATLAB 的 绘图工具。MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
matplotlib 支持的图形 https://matplotlib.org/stable/gallery/index.html

2、基础使用(以下都以折线图为例)

from matplotlib import pyplot as plt

x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]

plt.plot(x,y)

plt.show()

python3-matplotlib基本使用(以折线图为例)
上面图片存在的问题:
  • 图片的大小(想要高清大图)
  • 保存到本地
  • 描述信息,比如x,y轴表示什么
  • 调整刻度的间距
  • 线条的样式(颜色、透明度)
  • 标记出特殊的点(比如最高点,最低点)
  • 给图片加水印,防伪

3、设置图片宽高、分辨率、xy轴刻度、保存图片到本地

from matplotlib import pyplot as plt

x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]

"""
figure 指的是我们画的图
figsize 宽 高
dpi 没英寸多少个点,点多了,放大后不会模糊,有锯齿形
"""
plt.figure(figsize=(20, 8), dpi=80)

plt.plot(x,y)

xticks_lables = [i/2 for i in range(4, 49)]

plt.xticks(xticks_lables[::3])

plt.yticks(range(min(y), max(y)+1))

plt.show()

python3-matplotlib基本使用(以折线图为例)

4、X,y轴显示字符串并旋转显示

显示10点到12点每分钟气温变化

from matplotlib import pyplot as plt
import random

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]

plt.figure(figsize=(15, 8), dpi=80)

plt.plot(x,y)

xtick_lables = ["10:{}".format(i) for i in range(60)]
xtick_lables += ["11:{}".format(i) for i in range(60)]

plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60)

yticks_lables = ["{}tem".format(i) for i in range(15, 40, 2)]
plt.yticks(range(15, 40, 2), yticks_lables,rotation=60)

plt.show()

python3-matplotlib基本使用(以折线图为例)

5、X,y轴显示中文并设置字体大小

如果不设置,中文不能正常显示
针对Windows ,字体存放位置 C:\Windows\Fonts
linux/mac可以参考: https://www.bilibili.com/video/BV1hx411d7jb?p=6
也可以参考: https://www.runoob.com/numpy/numpy-matplotlib.html

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]

plt.figure(figsize=(15, 8), dpi=80)

plt.plot(x,y)

xtick_lables = ["10:{}".format(i) for i in range(60)]
xtick_lables += ["11:{}".format(i) for i in range(60)]

plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60)

yticks_lables = ["{}度".format(i) for i in range(15, 40, 2)]
plt.yticks(range(15, 40, 2), yticks_lables,rotation=60,fontproperties=my_font)

plt.show()

python3-matplotlib基本使用(以折线图为例)

6、设置XY轴和标题的描述信息并绘制网格

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]

plt.figure(figsize=(15, 8), dpi=80)

plt.plot(x,y)

xtick_lables = ["10:{}".format(i) for i in range(60)]
xtick_lables += ["11:{}".format(i) for i in range(60)]

plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60)

yticks_lables = ["{}度".format(i) for i in range(15, 40, 2)]
plt.yticks(range(15, 40, 2), yticks_lables,rotation=60,fontproperties=my_font)

plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)

plt.grid(alpha=0.9)

plt.show()

python3-matplotlib基本使用(以折线图为例)

7、同时绘制出两条折线并添加图例、设置折线颜色,折线样式

from matplotlib import pyplot as plt
from matplotlib import font_manager

"""
a 是自己  b 是同桌
x 轴是年龄  y 轴是女朋友的数量
"""
a = [1,0,2,1,5,2,3,6,9,5,1,2,3,1,2,3,2,1,2,1]
b = [1,3,1,1,2,1,1,1,4,4,4,2,2,2,4,1,1,4,1,2]

x = range(11, 31)

my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)

plt.figure(figsize=(15, 8), dpi=80)

plt.plot(x, a, label="自己", color="orange", linestyle="--", linewidth=3, alpha=0.3)
plt.plot(x, b, label="同桌", color="#FF69B4", linestyle="-.",linewidth=6, alpha=0.6)

xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, xtick_labels, fontproperties=my_font)
plt.yticks(range(0,11))

plt.grid(alpha=0.6, linestyle="--")

plt.legend(prop=my_font,loc="upper left")

plt.show()

python3-matplotlib基本使用(以折线图为例)

8、标记最高(低)点,添加水印

其他 图像添加image水印、图像添加背景 可 参考 https://zhuanlan.zhihu.com/p/390880393

from matplotlib import pyplot as plt
from matplotlib import font_manager

"""
a 是自己  b 是同桌
x 轴是年龄  y 轴是女朋友的数量
"""
a = [1,0,2,1,5,2,3,6,9,5,1,2,3,1,2,3,2,1,2,1]
b = [1,3,1,1,2,1,1,1,4,4,4,2,2,2,4,1,1,4,1,2]

x = range(11, 31)

my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)

plt.figure(figsize=(15, 8), dpi=80)

plt.plot(x, a, label="自己", color="orange", linestyle="--", linewidth=3, alpha=0.3)
plt.plot(x, b, label="同桌", color="#FF69B4", linestyle="-.",linewidth=6, alpha=0.6)

xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, xtick_labels, fontproperties=my_font)
plt.yticks(range(0,11))

plt.scatter(x[8], a[8], color='b', marker='o', edgecolors='r', s=300)

plt.text(
    x=15,
    y=5,
    s='hello world',
    rotation=15,
    ha='center',
    va=
    'center',
    alpha=0.5,
    fontdict=dict(
        fontsize=32,
        color='grey',
        family=
        'monospace',
        weight=
        'light',
    )
)

plt.grid(alpha=0.6, linestyle="--")

plt.legend(prop=my_font,loc="upper left")

plt.show()

python3-matplotlib基本使用(以折线图为例)

https://www.bilibili.com/video/BV1hx411d7jb?p=3


https://www.bilibili.com/video/BV1hx411d7jb?p=6 设置中文显示

https://www.bilibili.com/video/BV1hx411d7jb?p=8

Original: https://blog.csdn.net/qq_38959934/article/details/121086376
Author: 王2gou蛋
Title: python3-matplotlib基本使用(以折线图为例)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765562/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球