我是数据框可视化的新手,我正在探索这些方法,但似乎无法找到创建所需的非常特殊的图的方法。
我有一个像下面这样的数据框,其中我将日期时间作为索引和4个配置文件(而可能会有更多的列对绘图不感兴趣):
datetime
2019-06-11 00:00:00 28.97 38.47 NaN 41.47
2019-06-11 01:00:00 28.83 38.42 NaN 41.48
2019-06-11 02:00:00 28.72 38.38 NaN 41.49
2019-06-11 03:00:00 28.56 38.33 NaN 41.49
2019-06-11 04:00:00 28.36 38.22 NaN 41.51
我的目的是创建一个具有所描述规格的图:
线图,每个配置文件一个,但全部在一个图中。
线段应不相交,因此轮廓应一叠叠放,最好是轮廓1位于最顶部。
值不应更改,因此应该将Y轴堆叠起来。
图例应该是4个轮廓的整个图的一个。
具有NaN值的轮廓的图或线不应显示。
如果您能提出建议或指导我解决问题,我将不胜感激?
此外,是否有简短的结构化指南,其中包含一些示例,您会向我推荐这些示例,以便在可视化中获得一些良好的基础知识?我更喜欢在通勤时可以打印或通过平板电脑阅读的内容。
谢谢您的输入:-)
答案 0 :(得分:0)
可能对您有帮助:
df[3] = pd.to_numeric(df[3], errors = 'coerce').fillna(0)
df = df.rename(columns = {1:'A',2:'B',3:'C',4:'D'})
df = df.set_index(0)
df
Out[1]:
A B C D
0
2019-06-11 00:00:00 28.97 38.47 0.0 41.47
2019-06-11 01:00:00 28.83 38.42 0.0 41.48
2019-06-11 02:00:00 28.72 38.38 0.0 41.49
2019-06-11 03:00:00 28.56 38.33 0.0 41.49
2019-06-11 04:00:00 28.36 38.22 0.0 41.51
import matplotlib.dates as mdates
ax = [None]*4
fig = plt.figure()
f, (ax[0], ax[1], ax[2], ax[3]) = plt.subplots(4, 1, sharex=True)
ax[3].set_xlabel('Hours')
color = ['r','g','b','y']
for i in range(4):
col = df.columns[i]
_ = ax[i].plot(df.index,df[col], label = col, c = color[i])
xfmt = mdates.DateFormatter('%H:%M')
ax[3].xaxis.set_major_formatter(xfmt)
ax[3].xaxis.set_major_locator(mdates.HourLocator(byhour=range(24)))
_ = f.legend()