Pandas设置Datetime类型X轴间隔及散点图多变量同图展示问题
解决Matplotlib时间序列散点图的两个问题
嘿,我来帮你搞定这两个可视化的小问题,这都是处理时间序列和多变量绘图时很常见的需求~
问题1:优化X轴时间刻度,只显示年月且按2个月间隔排列
首先,你的timestamp已经是datetime类型了,这很好!咱们可以用matplotlib.dates里的工具来定制刻度:
- 导入
DateFormatter(用来定义刻度显示格式)和MonthLocator(用来设置刻度间隔) - 创建间隔为2个月的定位器,再定义显示格式为
%Y-%m(比如2017-08) - 把这两个工具应用到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
相关产品推荐
相关产品推荐

