【数据操作与可视化】Matplotlib绘图-常用操作

【数据操作与可视化】Matplotlib绘图-常用操作

1、自定义刻度和风格
ini 复制代码
import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 1.创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 2.绘制图像
plt.plot(x, y_shanghai)
# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 2.2 添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点--12点某城市温度变化图", fontsize=20)
# 2.4 图像保存
plt.savefig("./test.png")
# 3.图像显示
plt.show()
2、在同一个坐标系中多次绘制

需求:再添加一个城市的温度变化。 收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条,如下显示:

ini 复制代码
# 增加北京的温度数据
y_beijing = [random.uniform(5, 8) for i in x]
# 绘制折线图
plt.plot(x, y_shanghai)
# 使用多次plot可以画多个折线
plt.plot(x, y_beijing, color='r', linestyle='--')
3、图形风格
颜色字符 线条风格字符
r 红色 - 实线
g 绿色 - - 虚线
b 蓝色 -. 点划线
w 白色 : 点虚线
c 青色 ' ' 留空、空格
m 洋红
y 黄色
k 黑色

图例的显示位置: plt.legend(loc="best" 或 loc=0) :

Location String Location Code
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10
4、绘制子图

一个绘图对象可以包含多个轴,在matplotlib中用轴表示一个绘图区域,可以将其理解为子图。不特别指定,绘图对象只包括一个轴,因此只显示了一个轴(子图Axes)。

可以使用fig对象的add_subplot方法和plt.subplot方法绘制多个轴的图表。

ini 复制代码
import matplotlib.pyplot as plt
from pylab import mpl
import numpy as np
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
x = np.linspace(0, 10, 100)   # 0到10之间的所有数据,分成100个组
y = np.sin(x)
z = np.cos(x**2)
# 生成默认的画布,并利用该画布生成两个子图
fig = plt.figure(figsize=(8,4), dpi=100)
fig.add_subplot(2,1,1)     # 三个参数分别代表:2行,1列,第1个子图
# 在第一个子图上进行绘制
plt.title('正弦信号')
plt.xlabel('时间')
plt.ylabel('电压')
plt.xlim(-1, 11)
plt.ylim(-1.2, 1.2)
plt.xticks(np.arange(0, 11, 2))
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.plot(x, y, label='sin(x)')
plt.legend(loc=0)
plt.subplots_adjust(wspace=0, hspace=0.7)    # 调整子图之间的距离
# 第二个子图
fig.add_subplot(2,1,2)   # 创建第二个子图
plt.title('余弦信号')
plt.xlabel('时间')
plt.ylabel('电压')
plt.xlim(-1, 11)
plt.ylim(-1.2, 1.2)
plt.xticks(np.arange(0, 11, 2))
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.plot(x, z, 'm--', label='cos(x)')
plt.legend(loc=0)
plt.show()
5、添加说明和注释

添加文字说明主要用到方法text,注释可以使用annotate方法。

ini 复制代码
import matplotlib.pyplot as plt
from pylab import mpl
import numpy as np
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
x = np.linspace(0, 10, 100)   # 0到10之间的所有数据,分成100个组
y = np.sin(x)
z = np.cos(x)
# 绘图设置
plt.figure(figsize=(8, 5), dpi=100)  # 宽度和高度(英寸),dpi,每英寸像素值
plt.title('正余弦信号', color='red', fontsize=20, rotation=0, alpha=1)  # 添加标题,rotation角度旋转,alpha透明度
plt.xlabel('时间', fontsize=15, color='k', rotation=0)   ## 设置x和y轴的名称
plt.ylabel('电压', fontsize=15)
plt.xlim(-1, 11)         # 设置x和y轴的范围
plt.ylim(-1.2, 1.2)
plt.xticks(np.arange(0, 12, 2), fontsize=15, rotation=0)      # 设置x和y周的刻度
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.plot(x, y, color='blue', linewidth=2, label='sin(x)')     # 绘图
plt.plot(x, z, 'r--', label='cos(x)')    # r红色,--表示线型
plt.legend(loc=0)
# 添加文字说明。0,0表示文字的坐标位置
plt.text(0, 0, '零点', fontsize=10, rotation=0, color='r')
# 添加注释。xy指要添加注释的点,xytext是指注释文字的位置,可以自由指定。也可以添加多个注释
plt.annotate('最大值', color='r', xy=(1.87, 1),
             xytext=(2.2, 1.3),
             arrowprops=dict(facecolor='r', edgecolor='b', width=1, headlength=10))
plt.show()
相关推荐
爱笑的眼睛111 小时前
Flask应用API深度开发:从单体架构到微服务设计模式
java·人工智能·python·ai
木婉清fresh1 小时前
测开python高频面试精选100题
开发语言·python·面试
彼岸花开了吗1 小时前
构建AI智能体:四十、K-Means++与RAG的融合创新:智能聚类与检索增强生成的深度应用
人工智能·python
JHC0000001 小时前
47. 全排列 II
开发语言·python·面试
棒棒的皮皮1 小时前
【OpenCV】Python图像处理之特征提取
图像处理·python·opencv
用户576905308011 小时前
微调入门尝试:沐雪角色扮演
python·llm
ku_code_ku1 小时前
python几种包管理器的分析比较
开发语言·python·包管理器
2301_795167201 小时前
Python 高手编程系列一十三:现实例子 — 延迟求值属性
开发语言·windows·python
h***04771 小时前
爬虫学习案例3
爬虫·python·学习