如何在Python中单图展示两位用户的位置点变化曲线
同一图表绘制两位用户位置点变化曲线的方法
没问题,我来帮你搞定在同一图表里展示两位用户的位置点变化曲线。首先要注意的是,你的原始数据里tslot是字符串格式,建议先转换成时间类型,这样绘图时的X轴会是合理的时间序列,展示效果更好。下面是两种实用方法:
方法一:分用户提取数据后绘制(更直观可控)
import pandas as pd import matplotlib.pyplot as plt # 第一步:转换时间列格式并设置为索引 df['tslot'] = pd.to_datetime(df['tslot']) df.set_index('tslot', inplace=True) # 创建绘图画布和轴对象 fig, ax = plt.subplots(figsize=(20, 10)) # 分别绘制两位用户的曲线,并指定标签 df[df['user'] == 0]['Location_point'].plot(ax=ax, label='用户0') df[df['user'] == 1]['Location_point'].plot(ax=ax, label='用户1') # 添加图表元素,让结果更清晰 ax.set_xlabel('时间区间') ax.set_ylabel('位置点ID') ax.set_title('两位用户的位置点变化趋势') ax.legend() # 显示图例区分不同用户 plt.show()
方法二:使用groupby批量绘制(更简洁高效)
如果你想少写点代码,用groupby可以一键完成分组绘图:
import pandas as pd import matplotlib.pyplot as plt # 同样先处理时间格式 df['tslot'] = pd.to_datetime(df['tslot']) df.set_index('tslot', inplace=True) # 按user分组后直接绘制,默认会把不同用户的曲线放在同一图中 df.groupby('user')['Location_point'].plot(figsize=(20, 10), legend=True) # 添加必要的标签和标题 plt.xlabel('时间区间') plt.ylabel('位置点ID') plt.title('两位用户的位置点变化趋势') plt.show()
补充说明
你之前的代码dt = data.iloc[:,2:3]是提取了所有用户的位置点数据混在一起绘制,所以看不到分用户的趋势。上面两种方法都是先区分不同用户的数据,再在同一个轴上绘制曲线,这样就能清晰对比两位用户的位置变化啦。
内容的提问来源于stack exchange,提问作者Krush23
相关产品推荐
相关产品推荐

