Matplotlib中将以色彩、标记进行分组的线标记为同一组

该博客展示了如何使用Python的Matplotlib库将不同气象站的数据以颜色和标记分组,并在同一图表中绘制。通过读取多个CSV文件获取温度数据,将日期字符串转换为datetime对象,然后使用plot函数创建折线图。通过设置颜色和标签,将靠近和远离的气象站数据区分开,最后添加图例以增强可读性。
摘要由CSDN通过智能技术生成

Matplotlib中将以色彩、标记进行分组的线标记为同一组

目标效果:
在这里插入图片描述

import numpy as np
import pandas as pd
import datetime
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from dateutil import parser

df_ferrara = pd.read_csv('WeatherData/ferrara_270615.csv')
df_milano = pd.read_csv('WeatherData/milano_270615.csv')
df_mantova = pd.read_csv('WeatherData/mantova_270615.csv')
df_ravenna = pd.read_csv('WeatherData/ravenna_270615.csv')
df_torino = pd.read_csv('WeatherData/torino_270615.csv')
df_asti = pd.read_csv('WeatherData/asti_270615.csv')
df_bologna = pd.read_csv('WeatherData/bologna_270615.csv')
df_piacenza = pd.read_csv('WeatherData/piacenza_270615.csv')
df_cesena = pd.read_csv('WeatherData/cesena_270615.csv')
df_faenza = pd.read_csv('WeatherData/faenza_270615.csv')

# 读取温度和日期数据
y1 = df_ravenna['temp']
x1 = df_ravenna['day']
y2 = df_faenza['temp']
x2 = df_faenza['day']
y3 = df_cesena['temp']
x3 = df_cesena['day']
y4 = df_milano['temp']
x4 = df_milano['day']
y5 = df_asti['temp']
x5 = df_asti['day']
y6 = df_torino['temp']
x6 = df_torino['day']

# 把日期从 string 类型转化为标准的 datetime 类型
day_ravenna = [parser.parse(x) for x in x1]
day_faenza = [parser.parse(x) for x in x2]
day_cesena = [parser.parse(x) for x in x3]
day_milano = [parser.parse(x) for x in x4]
day_asti = [parser.parse(x) for x in x5]
day_torino = [parser.parse(x) for x in x6]

# 调用 subplots() 函数,重新定义 fig, ax 变量
fig, ax = plt.subplots()
plt.xticks(rotation=70)

hours = mdates.DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(hours)

#这里需要画出三根线,所以需要三组参数, 'g'代表'green'

l1 = ax.plot(day_ravenna,y1,'r',day_faenza,y2,'r',day_cesena,y3,'r',label="Near")
l2 = ax.plot(day_milano,y4,'g',day_asti,y5,'g',day_torino,y6,'g',label="Far")
red_patch = mpatches.Patch(color='red', label='Near')
green_patch = mpatches.Patch(color='green', label='Far')
ax.legend(handles=[red_patch, green_patch])

如果使用一般的办法将会获得下图效果:

通常使用的代码:

import matplotlib.patches as mpatches
# 读取温度和日期数据
y1 = df_ravenna['temp']
x1 = df_ravenna['day']
y2 = df_faenza['temp']
x2 = df_faenza['day']
y3 = df_cesena['temp']
x3 = df_cesena['day']
y4 = df_milano['temp']
x4 = df_milano['day']
y5 = df_asti['temp']
x5 = df_asti['day']
y6 = df_torino['temp']
x6 = df_torino['day']

# 把日期从 string 类型转化为标准的 datetime 类型
day_ravenna = [parser.parse(x) for x in x1]
day_faenza = [parser.parse(x) for x in x2]
day_cesena = [parser.parse(x) for x in x3]
day_milano = [parser.parse(x) for x in x4]
day_asti = [parser.parse(x) for x in x5]
day_torino = [parser.parse(x) for x in x6]

# 调用 subplots() 函数,重新定义 fig, ax 变量
fig, ax = plt.subplots()
plt.xticks(rotation=70)

hours = mdates.DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(hours)

#这里需要画出三根线,所以需要三组参数, 'g'代表'green'

l1 = ax.plot(day_ravenna,y1,'r',day_faenza,y2,'r',day_cesena,y3,'r',label="Near")
l2 = ax.plot(day_milano,y4,'g',day_asti,y5,'g',day_torino,y6,'g',label="Far")
ax.legend()

Reference:
蓝桥云课:使用 Python 3 进行气象数据分析
Matplotlib legend guide

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值