Python使用Matpoltlib绘制2×2的散点矩阵图

101 阅读1分钟

引入依赖

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

显示中文

plt.rcParams["font.sans-serif"]=["SimHei"]

读取数据

df = pd.read_csv('bs_tem.csv')

绘图

# 绘制2*2子图画布
fig,axes = plt.subplots(2,2)

x_arr = np.linspace(20,32,num=100)
y_arr = -2.4931 * x_arr + 143.09 

# 绘制子图
axes[0][0].scatter(df['平均气温(℃)'],df['平均湿度(%)'],color='#FF7C80')  
axes[0][0].plot(x_arr,y_arr,'--') 

axes[0][1].scatter(df['平均气温(℃)'],df['总降水量(mm)'],color='#6666FF')  

axes[1][0].scatter(df['平均气温(℃)'],df['总降水量(mm)'],color='red')  

axes[1][1].scatter(df['平均气温(℃)'],df['总降水量(mm)'],color='pink'ind = df['总降水量(mm)'].idxmax()

# 文字标注
axes[0][1].annotate("最高降水量:"+str(df['总降水量(mm)'].loc[ind])+"mm",(ind+2,df['总降水量(mm)'].loc[ind]),color='r')

# 设置子图标签
axes[1][0].scatter(df['平均气温(℃)'],df['最低气温(℃)'],color='#00CC99') 
axes[1][1].scatter(df['平均气温(℃)'],df['最高气温(℃)'],color='#BC106E')

axes[0][0].set_title("平均气温(℃)&平均湿度(%)-学号后四位")
axes[0][0].set_ylabel('平均湿度(%)')

axes[0][1].set_title("平均气温(℃)&总降水量(mm)")
axes[0][1].set_ylabel('总降水量(mm)')

axes[1][0].set_title("平均气温(℃)&最低气温(℃)")
axes[1][0].set_ylabel('最低气温(℃)')

axes[1][1].set_title("平均气温(℃)&最高气温(℃)")
axes[1][1].set_ylabel('最高气温(℃)') 

# 去除边框
for i in range(0,2):

     for j in range(0,2):

         axes[i][j].spines["top"].set_visible(False)

          axes[i][j].spines["right"].set_visible(False)

plt.show()

效果图