use*_*209 3 python matplotlib pandas
我正在子图中绘制熊猫数据框的列。要绘制的列存储在数组中an。下面的代码工作正常,如果len(an)>1,即如果我绘制多个图形,
fig, axs = plt.subplots(len(an))
for index, item in enumerate(an, start=0):
gd.plot(ax=axs[index],x="Date",y=item)
Run Code Online (Sandbox Code Playgroud)
但它因错误而失败
类型错误:“AxesSubplot”对象不可下标
如果len(an)==1。
如果只有一个情节要绘制,是否可以使子图工作,或者我是否必须用if?
小智 6
根据 matplotlib 的文档,参数“squeeze”可以解决您的问题:
挤压:布尔,可选,默认值:真
- 如果为 True,则从返回的 Axes 数组中挤出额外的维度:
- 如果仅构造一个子图 (nrows=ncols=1),则生成的单个 Axes 对象将作为标量返回。
- 对于 Nx1 或 1xM 子图,返回的对象是 Axes 对象的一维 numpy 对象数组。
- 对于 NxM,N>1 和 M>1 的子图作为二维数组返回。
- 如果为 False,则根本不进行压缩:返回的 Axes 对象始终是包含 Axes 实例的二维数组,即使它最终是 1x1。
因此,您的问题的解决方案是:
fig, axs = plt.subplots(1,len(an),squeeze=False)
for index, item in enumerate(an, start=0):
gd.plot(ax=axs[0,index],x="Date",y=item)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |