You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在时间序列折线图中高亮周末?共享单车数据集可视化需求

高亮共享单车骑行量折线图中的周末区域

我明白你想要在日期-骑行量折线图里突出显示周末的需求,这能让周末和工作日的骑行趋势对比更直观。下面我会一步步教你实现这个效果,结合Matplotlib和Seaborn来完成:

步骤1:预处理数据,标记周末

首先确保你的日期列是datetime类型,然后添加一列标记是否为周末:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 假设你的DataFrame是df,日期列名为'date',总骑行量列名为'total_rides'
df['date'] = pd.to_datetime(df['date'])
# 标记周末:weekday()返回0=周一,6=周日,所以5和6对应周末
df['is_weekend'] = df['date'].dt.weekday.isin([5, 6])

步骤2:绘制基础折线图

先用Seaborn画出核心的骑行量趋势线:

plt.figure(figsize=(12, 6))
sns.lineplot(data=df, x='date', y='total_rides', color='#1f77b4', linewidth=2)
ax = plt.gca()

步骤3:高亮周末区域

我们可以循环遍历所有周末的日期,用axvspan给每个周末添加半透明的背景色:

# 获取所有周末的日期
weekend_dates = df[df['is_weekend']]['date']
# 去重并排序周末日期
unique_weekends = weekend_dates.dt.date.unique()
unique_weekends.sort()

for date in unique_weekends:
    # 定义周末的时间区间:从当天0点到次日23:59
    start = pd.Timestamp(date)
    end = start + pd.Timedelta(days=1, hours=23, minutes=59)
    # 添加半透明高亮背景
    ax.axvspan(start, end, color='orange', alpha=0.2)

步骤4:优化图表细节

最后调整图表的标签、标题和样式,让它更清晰易读:

ax.set_title('每日共享单车骑行量趋势(周末高亮)', fontsize=14)
ax.set_xlabel('日期', fontsize=12)
ax.set_ylabel('总骑行量', fontsize=12)
# 自动旋转x轴日期标签,避免重叠
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

补充说明

  • 如果你的数据是按天聚合的单条记录,也可以简化高亮逻辑:直接对每个周末日期,高亮当天的x轴区间即可。
  • 你可以调整alpha参数(0-1)控制高亮区域的透明度,修改color参数匹配你的参考图表风格。
  • 若需要区分周六和周日,可以在循环里判断日期的weekday()值,给两者设置不同的高亮颜色。

内容的提问来源于stack exchange,提问作者Chinmay Das

火山引擎 最新活动