matplotlib.dates 年月日 小时分,画图

from datetime import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt

# 生成横纵坐标信息
dates = ['2016-12-20 09:52:54', '2016-12-20 15:52:54', '2016-12-20 21:52:54', '2016-12-21 03:52:54']
xs = [datetime.strptime(m,'%Y-%m-%d %H:%M:%S').date() for m in dates]
ys = range(len(xs))
print(xs)
print(ys)
# 配置横坐标
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
# Plot
plt.plot(xs, ys)
plt.gcf().autofmt_xdate()  # 自动旋转日期标记
plt.show()
在Pandas中处理这样的数据并使用Matplotlib创建图形,首先你需要对数据进行整理和清洗,然后使用`groupby`功能按区域分组,并在同一图上绘制每个区域的数据。可以按照以下步骤操作: 1. 导入所需的库: ```python import pandas as pd import matplotlib.pyplot as plt from matplotlib.dates import DateFormatter ``` 2. 加载和预处理数据: ```python # 假设df是你的DataFrame df['委托日期'] = pd.to_datetime(df['委托年月']) # 将字符串转换为日期格式 # 确保‘委托日期’列是日期类型 ``` 3. 按照区域、手次和委托日期分组: ```python grouped_data = df.groupby(['区域', '手次', '委托日期']).agg({'委托金额': 'sum', '回收率': 'mean'}) ``` 4. 创建子图并绘制折线: ```python fig, axs = plt.subplots(nrows=len(set(df['区域'])), ncols=2, figsize=(10, len(set(df['区域'])) * 5), sharex=True) axs = axs.ravel() # 获取所有轴 for i, (region, sub_df) in enumerate(grouped_data.groupby('区域')): ax = axs[i] # 绘制委托金额折线 ax.plot(sub_df['委托日期'], sub_df['委托金额'], label='委托金额') ax.set_ylabel('委托金额', color='blue') # 设置左侧y轴标签 ax.tick_params(axis='y', labelcolor='blue') # 绘制回收率折线,使用right参数共享x轴 ax_twin = ax.twinx() ax_twin.plot(sub_df['委托日期'], sub_df['回收率'], color='green', label='回收率') ax_twin.set_ylabel('回收率', color='green') # 设置右侧y轴标签 ax_twin.tick_params(axis='y', labelcolor='green') # 格式化x轴 ax.xaxis_date() formatter = DateFormatter('%Y-%m-%d') # 使用特定日期格式 ax.xaxis.set_major_formatter(formatter) ax.set_title(region) # 设置每个区域标题 ax.legend() plt.tight_layout() # 调整子图间距 plt.show() ``` 在这个例子中,我们假设你的DataFrame已经按照需要的格式排列好。运行上述代码后,你会得到一个由各区域数据组成的图表,每个区域占一行,左侧显示委托金额,右侧显示回收率。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值