You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas设置Datetime类型X轴间隔及散点图多变量同图展示问题

解决Matplotlib时间序列散点图的两个问题

嘿,我来帮你搞定这两个可视化的小问题,这都是处理时间序列和多变量绘图时很常见的需求~


问题1:优化X轴时间刻度,只显示年月且按2个月间隔排列

首先,你的timestamp已经是datetime类型了,这很好!咱们可以用matplotlib.dates里的工具来定制刻度:

  1. 导入DateFormatter(用来定义刻度显示格式)和MonthLocator(用来设置刻度间隔)
  2. 创建间隔为2个月的定位器,再定义显示格式为%Y-%m(比如2017-08)
  3. 把这两个工具应用到X轴上,再加上旋转刻度标签避免重叠

代码示例片段:

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

# 假设你的df已经是处理好的DataFrame
x = df.timestamp

# 初始化画布和轴
fig, ax = plt.subplots(figsize=(10,6))

# 定制X轴刻度
# 设置每2个月显示一个刻度
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=2))
# 设置刻度显示格式为年月
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
# 旋转刻度标签,避免重叠
plt.xticks(rotation=45)

问题2:同图用不同颜色展示两个变量

这个很简单,咱们只需要在同一个轴上两次调用scatter,分别传入两个y变量,设置不同的颜色和标签,最后加上图例就可以了。

把两个问题的解决方案整合起来,完整代码如下:

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

# 假设你的df已经是处理好的DataFrame
x = df.timestamp
y_fav = df.favorite_count
y_rt = df.retweet_count

# 初始化画布
fig, ax = plt.subplots(figsize=(10,6))

# 绘制点赞数散点,蓝色
ax.scatter(x, y_fav, alpha=0.4, color='blue', label='Favorite Count')
# 绘制转发数散点,橙色
ax.scatter(x, y_rt, alpha=0.4, color='orange', label='Retweet Count')

# 定制X轴刻度
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=2))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.xticks(rotation=45)

# 添加图例、坐标轴标签和标题
ax.legend()
ax.set_xlabel('Timestamp')
ax.set_ylabel('Count')
ax.set_title('Favorite and Retweet Counts Over Time')

plt.tight_layout() # 自动调整布局,避免标签被截断
plt.show()

小补充:

  • 如果你的timestamp还不是datetime类型,先执行df['timestamp'] = pd.to_datetime(df['timestamp'])转换
  • alpha=0.4可以让重叠的点更清晰,这个你已经用到了,很棒~
  • 颜色可以自由替换,比如用'red'、'green'或者RGB值(如#FF5733)都行

内容的提问来源于stack exchange,提问作者Xiaoya Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:02:46