gpt4 book ai didi

python - 如何强制 Pandas 和原生 matplotlib 共享轴

转载 作者:行者123 更新时间:2023-11-28 22:12:36 26 4
gpt4 key购买 nike

各位,

考虑下面的例子

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

fig, (ax1,ax2) = plt.subplots(2,1)
dates = pd.date_range("2018-01-01","2019-01-01",freq = "1d")
x = pd.DataFrame(index = dates, data = np.linspace(0,1,len(dates)) )
x.plot(ax=ax1)
y = np.random.random([len(dates),100]) * x.values
ax2.pcolormesh(range(len(x)), np.linspace(-1,1,100), y.T)
plt.show()

Plot

此时,我希望两个轴 (ax1,ax2) 共享 x 轴,即在第二个轴上显示正确的 pandas 日期。 sharex=True 似乎不起作用。我怎样才能做到这一点?我尝试了不同的可能性,但没有成功。

编辑:由于 pandas 日期格式优于 native matplotlib 格式,请为我提供使用 pandas 日期格式的解决方案(例如,使用 pandas 日期格式在交互式环境中缩放效果更好)。谢谢你!

最佳答案

一种方法是使用 matplotlib 进行所有绘图,这样使用不同的时间格式就没有问题:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

fig, (ax1,ax2) = plt.subplots(2,1, sharex='col')
dates = pd.date_range("2018-01-01","2019-01-01",freq = "1d")
x = pd.DataFrame(index = dates, data = np.linspace(0,1,len(dates)) )

#x.plot(ax=ax1)
ax1.plot(x.index, x.values)


y = np.random.random([len(dates),100]) * x.values
ax2.pcolormesh(x.index, np.linspace(-1,1,100), y.T)

fig.tight_layout()
plt.show()

这给出了以下情节:

result of the above code

关于python - 如何强制 Pandas 和原生 matplotlib 共享轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54668666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com