matplotlib 多子图的画法 - 设置坐标范围 - 设置坐标的显示间隔 - 设置figure的大标题 - 设置x轴和y轴的名称 - df.groupby

本文主要介绍了多子图的画法,包括设置坐标范围、坐标显示间隔,还能设置 figure 的大标题以及 x 轴和 y 轴的名称,同时给出了 Drugs.csv 数据地址并展示了数据样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文实现的功能:

  • 多子图的画法
  • 设置坐标范围
  • 设置坐标的显示间隔
  • 设置figure的大标题
  • 设置x轴和y轴的名称

👉Drugs.csv 数据地址🔗


▲ 数据样式


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

data = pd.read_csv('Drugs.csv')
df = pd.DataFrame(data)
# 以'YYYY'和'State'对'DrugReports'进行统计
reports = df.groupby(['YYYY', 'State'])['DrugReports'].sum().unstack('State') # 以‘State’列为目标消除堆叠

max_y = reports.max().max()  #子图中纵坐标最大值
min_y = reports.min().min()  #子图中纵坐标最小值
max_x = reports.idxmax().max()#子图中横坐标最大值
min_x = reports.idxmin().min()#子图中横坐标最小值

# 获取'State'的值['KY', 'OH', 'PA', 'VA', 'WV']
value_State = reports.columns

# 画图
# 标题颜色样式
colors = plt.get_cmap('tab10') 

plt.figure(figsize=(20,10))

x_major_location = MultipleLocator(100)  #将横坐标宽度设为10
y_major_location = MultipleLocator(1000)  #将纵坐标宽度设为10

for i, value in enumerate(value_State):
    x = reports.index
    y = reports[value]
    
    plt.subplot(2,3,i+1) # 记得是i+1,因为子图的下标是从1开始的。
    plt.plot(x,y,color=colors(i))
    plt.fill_between(x,y,facecolor='skyblue',alpha=0.4)
    plt.title(value,loc='right',color=colors(i))
    
    # 修改每个子图的刻度宽度
    axis = plt.gca() # 获取当前axis
    ax.xaxis.set_major_locator(x_major_location)
    ax.yaxis.set_major_locator(y_major_location )
    
    # 设置每个子图的刻度总范围
    plt.xlim(min_x,max_x)
    plt.ylim(min_y,max_y)
    
    plt.grid() 

# 给figure加横纵轴的名称,范围在[0,1]之间
plt.figtext(0.5, 0.05, 'Year', fontsize=15)
plt.figtext(0.05, 0.5, 'DrugReports', va='center', rotation='vertical',fontsize=15)

# figure的标题
plt.suptitle('DrugReport of each state every year', fontsize=20)

plt.show()

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫咪钓鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值