1 回答
TA贡献1804条经验 获得超7个赞
问题是
plt.subplots(2, 3, figsize=(24, 10))
创建两组 3 个子图,而不是一组 6 个子图。
array([[<AxesSubplot:xlabel='radians'>, <AxesSubplot:xlabel='radians'>, <AxesSubplot:xlabel='radians'>], [<AxesSubplot:xlabel='radians'>, <AxesSubplot:xlabel='radians'>, <AxesSubplot:xlabel='radians'>]], dtype=object)
axes
使用解压 中的所有子图数组axes.ravel()
。numpy.ravel
,它返回一个展平的数组。列表理解也可以工作,
axe = [sub for x in axes for sub in x]
实际上,可以类似地使用
axes.ravel()
、axes.flat
、 和。axes.flatten()
请参阅numpy 中的 flatten 和 ravel 函数有什么区别?& numpy 之间的 flat 和 ravel() 之间的区别。
将每个图分配给 中的子图之一
axe
。
import pandas as pd
import numpy as np
# sinusoidal sample data
sample_length = range(1, 6+1)
rads = np.arange(0, 2*np.pi, 0.01)
data = np.array([np.sin(t*rads) for t in sample_length])
df = pd.DataFrame(data.T, index=pd.Series(rads.tolist(), name='radians'), columns=[f'freq: {i}x' for i in sample_length])
# crate the figure and axes
fig, axes = plt.subplots(2, 3, figsize=(24, 10))
# unpack all the axes subplots
axe = axes.ravel()
# assign the plot to each subplot in axe
for i, c in enumerate(df.columns):
df[c].plot(ax=axe[i])
添加回答
举报