机器学习基础-matplotlib

一、相关知识点

二、plot

python 复制代码
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
#%%

#%%
import matplotlib.pyplot as plt
import random


# 画出温度的变化图

# 1. 准备x y坐标的数据
x = range(60)
y_shanghai = [random.uniform(13, 15) for i in x]  # 上海温度
y_beijing = [random.uniform(1, 6) for j in x]  # 北京温度
# random.uniform(15,18) 这个函数返回的是15,18之间的随机浮点数
# 利用了列表推导式

# 1. 创建画布
plt.figure(figsize=(20,10),dpi=90)

# 2.绘制折线图
plt.plot(x,y_shanghai,color="b",linestyle= "--",label="上海")
plt.plot(x,y_beijing,color="r",linestyle="--",label="北京") #linestyle="--" 虚线
# 增加以下代码 增加刻度
# 构造x轴的刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 修改x轴的刻度、标签
plt.xticks(x[::5],x_ticks_label[::5],rotation=45)
# 修改y轴的刻度
y_ticks = range(40)
plt.yticks(y_ticks[::5])

plt.xlabel("时间",fontsize = 30)
plt.ylabel("温度",fontsize = 30)

plt.grid(True, linestyle='--', alpha=0.3, color='gray')  # 使用灰色网格

# 保存图片到指定路径
plt.savefig("test.png")
plt.legend(loc="best")

plt.tight_layout()
#3. 图像显示
plt.show()

三、subplot

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import random

# 图像风格模仿ggplot
plt.style.use('ggplot')

import matplotlib
plt.rcParams['font.sans-serif'] = ['KaiTi']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
#%%

# 图像风格模仿ggplot
plt.style.use('ggplot')

# 生成数据
x = np.linspace(0,59,60)
y_shanghai = [random.uniform(13, 15) for i in x]  # 上海温度
y_beijing = [random.uniform(1, 6) for j in x]  # 北京温度

#%%

# 创建一个画布和两个子图
fig, axes = plt.subplots(2, 1, figsize=(10, 7), sharex=True)
axes = axes.flatten()

# 定义x_ticks_label,y_ticks
x_ticks_label = ["11点{}分".format(i) for i in x]


y_ticks = range(20)
# 绘制上海温度折线图
axes[0].plot(x, y_shanghai, c='r', label='上海',marker='o', linestyle='--')
# 绘制北京温度折线图
axes[1].plot(x, y_beijing, c='b', label='北京',marker='^', linestyle='-')
for ax in axes:
    print(ax)
    ax.set_ylabel("温度", fontsize=12)
    ax.grid(True, linestyle='--', alpha=0.3, color='gray')  # 使用灰色网格

    # 注意刻度和刻度标签是不一样的
    ax.set_xticks(x[::5])  # 每隔5分钟显示一个刻度
    ax.set_xticklabels(x_ticks_label[::5], rotation=40)  # 设置x轴刻度标签
    ax.set_yticks(y_ticks[::5])
    
    ax.set_xlabel("日期",fontsize=12)
    # 添加图例
    ax.legend(loc='upper right')  # 第一个坐标轴的图例

axes[0].tick_params(axis='y', labelcolor='r')  # 设置第一个坐标轴的y轴刻度颜色
axes[0].set_ylabel('温度 (上海)', color='r')  # 第一个坐标轴的y轴标签

axes[1].tick_params(axis='y', labelcolor='b')  # 设置第二个坐标轴的y轴刻度颜色
axes[1].set_ylabel('温度 (北京)', color='b')  # 第二个坐标轴的y轴标签

# 标题
plt.suptitle('中午11点0分到12点之间的温度变化图', fontsize=16)

plt.show()