Matplotlib子图,其中一个图有多行,一行没有

时间:2016-08-25 16:16:36

标签: python matplotlib

目前正在尝试这个:

fig, ax1, ax3 = plt.subplots(1, 2, figsize=(10,5))

# share rate line and ax
ax1.plot(temp_df.index, temp_df['share_rate'], 'b-')
ax1.set_ylim([0,.03])

# % of total video views line and ax
ax2 = ax1.twinx()
ax2.plot(temp_df.index, temp_df['percent_of_total_views'], 'r-')

# third plot
ax3.plot([1,2,3,4], [1,2,3,4])

plt.show()

但收到此错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-62-a8364e1f65f8> in <module>()
     10     print "average share rate: "
     11 
---> 12     fig, ax1, ax3 = plt.subplots(1, 2, figsize=(10,5))
     13 
     14     # share rate line and ax

ValueError: need more than 2 values to unpack

1 个答案:

答案 0 :(得分:1)

您正在以错误的方式使用matplotlibs subplots-function

你的陈述

fig, ax1, ax3 = plt.subplots(1, 2, figsize=(10,5))  # WRONG 3 vars on left, 2 are returned

期望返回一个大小为3的元组,这些元组被放入fig, ax1, ax3

但该函数只返回一个大小为2的元组fig, ax,其中ax可以是单个轴,也可以是一系列轴对象(参见docs)。

如果您知道,这个斧头是一个大小为2的序列,您可以直接在左侧打开包装:

fig, (ax1, ax3) = plt.subplots(1, 2, figsize=(10,5))  # CORRECT because 2nd return-value unpacked