使用PyPlot可视化同一数据时折线异常问题求助
问题原因与解决办法
你的问题出在排序操作没有实际生效,导致时间序列处于乱序状态,matplotlib按原始数据顺序绘图时,折线就会出现交叉。
具体分析
你执行了active_addresses.sort_values(by='Active Addresses/t'),但sort_values默认参数inplace=False——这行代码只会返回一个排序后的新DataFrame,不会修改原有的active_addresses。当你用plt.plot直接绘制时,X轴的时间数据还是乱序的,折线会在时间点之间来回跳转,呈现交叉状态。
而pandas自带的plot()方法,会自动识别时间列并按时间顺序绘图(即使数据乱序),所以显示正常。
解决办法
把排序后的结果赋值回原DataFrame,或者设置inplace=True实现原地修改:
方法一:赋值回原变量
active_addresses["Active Addresses/t"] = pd.to_datetime(active_addresses["Active Addresses/t"]) # 保存排序后的结果到原变量 active_addresses = active_addresses.sort_values(by='Active Addresses/t')
方法二:使用inplace参数原地修改
active_addresses["Active Addresses/t"] = pd.to_datetime(active_addresses["Active Addresses/t"]) # 原地排序,无需额外赋值 active_addresses.sort_values(by='Active Addresses/t', inplace=True)
完成排序后再执行matplotlib绘图代码,折线就会按时间顺序正常显示:
plt.plot(active_addresses["Active Addresses/t"], active_addresses["Active Addresses/v"]) plt.gca().set(xlabel="Year", ylabel="Value") plt.show()
内容的提问来源于stack exchange,提问作者CasellaJr
相关产品推荐
相关产品推荐

