如何在绘制Pandas Series时反转坐标轴?含时间序列轴交换方法
如何交换时间序列类型Series绘图的X轴与Y轴?
对于时间序列类型的pandas Series,默认绘图时会将时间索引作为X轴、Series数值作为Y轴。要交换X/Y轴,可通过修改Series结构或直接在plot()方法中指定参数两种方式实现,以下是具体操作:
原始代码与默认绘图效果
首先是生成时间序列Series并绘图的基础代码:
import pandas as pd import numpy.random as npr def rand_data(n=5): return npr.choice([1,5,6,8,9], size=n) npr.seed(0) n = 8 index = pd.date_range('2013/01/31 09:10:12', periods=n, freq='ME') s = pd.Series(index=index, data=rand_data(n)) s.plot()
默认绘图中,X轴为时间索引,Y轴为随机生成的数值。
方法一:修改Series结构交换轴
利用Series默认以索引为X轴的特性,将原Series的数值作为新索引,原时间索引作为新数值,再调用plot()即可:
# 交换索引与数值,生成新的Series s_swapped = pd.Series(s.index, index=s.values) s_swapped.plot()
此时绘图的X轴为原Series的数值,Y轴为时间索引,实现轴的交换。
方法二:通过plot()方法参数指定轴
无需修改Series本身,直接在plot()中显式指定x和y参数。可以先将Series转为DataFrame(方便指定列)再绘图:
# 将Series转为DataFrame,原索引变为列"datetime",原数值变为列"value" df = s.reset_index(name='value').rename(columns={'index': 'datetime'}) # 指定x为value,y为datetime df.plot(x='value', y='datetime')
也可直接在Series的plot()方法中传入对应序列:
s.plot(x=s.values, y=s.index)
两种方式都能直接实现X/Y轴的交换。
内容的提问来源于stack exchange,提问作者mins
相关产品推荐
相关产品推荐

