python - 有没有一种方法可以在一个图中创建堆叠图,或者在一个图中使用带有 matplot/seaborn 的堆叠 Y 轴创建线?
问题描述
我是数据框可视化的新手,我正在探索这些方法,但我似乎无法找到一种方法来创建我需要的非常具体的情节。
我有一个像下面这样的数据框,其中我有日期时间作为索引和 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 值的配置文件的图或线。
如果您能提出建议或指导我完成解决方案,我将不胜感激?
此外,是否有一个包含示例的简短结构化指南,您会向我推荐这些示例,以便在可视化中获得一些良好的基础知识?我更喜欢通勤时可以通过平板电脑打印或阅读的东西。
谢谢您的意见 :-)
解决方案
可能会对您有所帮助:
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()
推荐阅读
- azure-data-factory - 如何从 sql server 表导出到 Azure 数据工厂中的多个 csv 文件
- r - 通过顶点名称添加网络图属性
- python - Docker“运行”找不到文件
- python - 无法从 Web 服务器访问 dockerized 烧瓶应用程序的路由
- firebase-authentication - Google 登录 - 只要求提供 ID,而不是电子邮件和个人资料范围
- windows - 为什么我的重定向 stderr 的文件是空的?
- sql-server - SQL Server 2008 Express 还原不同
- html - 如何为 post 方法命名多个动态输入字段 - Django
- elasticsearch - VEGA - 面积图 - 奇怪的数据点行为
- java - 字段 HttpStatus.DESTINATION_LOCKED 已弃用