我正在尝试使用pandas的lag_plot模块(Lag-1相关图)制作一个包含多个子图的图形。我正在尝试使用pyplot的标准'subplots'命令,但是当我尝试在结果轴上调用“lag_plot”时,它似乎不喜欢它。这是我的代码:
c1, c2, c3, c4, c5 = sns.color_palette("husl", 5)
ax1 = plt.subplot2grid((3,2), (0,0))
ax2 = plt.subplot2grid((3,2), (0,1))
ax3 = plt.subplot2grid((3,2), (1,0))
ax4 = plt.subplot2grid((3,2), (1,1))
ax5 = plt.subplot2grid((3,2), (2,0))
ax1.lag_plot(d1, color = c1, alpha=0.5)
ax2.lag_plot(d2, color = c2, alpha=0.5)
ax3.lag_plot(d3, color = c3, alpha=0.5)
ax4.lag_plot(d4, color = c4, alpha=0.5)
ax4.lag_plot(d4, color = c5, alpha=0.5)
以下是导致的错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/home/iullah/<ipython-input-78-9deb0f435f22> in <module>()
5 ax4 = plt.subplot2grid((3,2), (1,1))
6 ax5 = plt.subplot2grid((3,2), (2,0))
----> 7 ax1.lag_plot(d1, color = c1, alpha=0.5)
8 ax2.lag_plot(d2, color = c2, alpha=0.5)
9 ax3.lag_plot(d3, color = c3, alpha=0.5)
AttributeError: 'AxesSubplot' object has no attribute 'lag_plot'
生成正确的子图数组(2列和3行子图,具有适当的轴),但所有空白(当然)。那么,我做错了什么?在使用pandas绘图功能时,还有其他方法可以获得多个子图吗?
编辑:此代码有效:
c1 = sns.color_palette("YlOrRd_r", 8)
plt.subplot(321)
lag_plot(d1, color = c1, alpha=0.5)
plt.subplot(322)
lag_plot(d2, color = c1, alpha=0.5)
plt.subplot(323)
lag_plot(d3, color = c1, alpha=0.5)
plt.subplot(324)
lag_plot(d4, color = c1, alpha=0.5)
plt.subplot(325)
lag_plot(d5, color = c1, alpha=0.5)
plt.show()
为什么该代码有效,但不是第一个?我更倾向于以第一种方式做到这一点,因为我可以做的事情就是让行和列共享轴标签(使图更清晰)我不能用第二组代码做。
答案 0 :(得分:1)
您应该对数据调用绘图命令并为其指定matplotlib轴:
c1, c2, c3, c4, c5 = sns.color_palette("husl", 5)
ax1 = plt.subplot2grid((3,2), (0,0))
ax2 = plt.subplot2grid((3,2), (0,1))
ax3 = plt.subplot2grid((3,2), (1,0))
ax4 = plt.subplot2grid((3,2), (1,1))
ax5 = plt.subplot2grid((3,2), (2,0))
d1.lag_plot(ax=ax1, color = c1, alpha=0.5)
d2.lag_plot(ax=ax2, color = c2, alpha=0.5)
d3.lag_plot(ax=ax3, color = c3, alpha=0.5)
d4.lag_plot(ax=ax4, color = c4, alpha=0.5)
答案 1 :(得分:0)
您可以通过lag_plot
参数提供ax=...
函数的轴:
from pandas.tools.plotting import lag_plot
df = pd.DataFrame ( { ch: np.random.randn(100) for ch in 'AB' } )
fig = plt.figure( )
ax = fig.add_axes( [.05, .05, .9, .9] )
lag_plot( df.A, ax=ax)
lag_plot( df.B, ax=ax, color='Red' )