2017-09-05 82 views
0

我是数据可视化的新手,对x限制范围有一个简单的问题。由于我有4个不同的地块,我正在使用2x2网格,使用add_subplot方法。这是我迄今为止所做的:设置子图的X限制

fig = plt.figure() 
ax = fig.add_subplot(221, facecolor='lightgrey') 
weeks = [] 
for weekNum in df.WeekNum: 
    weeks.append(weekNum) 
maxNumber = max(weeks) 
sixWeekList = list(range(maxNumber-6, maxNumber)) 
ax.set_title('Photo', fontsize = 14) 
ax.set_xlabel('Week Number') 
ax.set_xlim(sixWeekList) 
ax.set_ylabel('Percentage') 
ax.set_ylim([0,100]) 
fig.tight_layout() 

我的目标是在每次运行脚本时禁止绘制最新的6周。但是,当我运行上述程序时,它显示以下错误,并且不让我设置x轴的范围。不过,如果我只是把[30,35]在ax.set_xlim(),它运行平稳,例如:ax.set_xlim([30,35])

**ValueError**     Traceback (most recent call last) 
<ipython-input-165-cbbb1eabca92> in <module>() 

---> ax.set_xlim(tmp) 
ValueError: too many values to unpack (expected 2) 

解决这个任何替代方法?

+1

尝试打印出来'sixWeekList'它是超过2个号码清单。你只需要最大和最小值,例如'ax.set_xlim(maxNumber-6,maxNumber)'没有实际的数据我不能运行它,但是这个或者类似的东西应该会得到你需要的东西 – johnchase

+0

好吧,工作! !我猜“set_xlim”方法定义了范围本身。我不必通过列表,只指定下限和上限数字。 – SalN85

回答

1

尝试直接使用max和min指定x限制,而不是列表,这是它失败的原因。

例如:

fig = plt.figure() 
ax = fig.add_subplot(221, facecolor='lightgrey') 
weeks = [] 
for weekNum in df.WeekNum: 
    weeks.append(weekNum) 
maxNumber = max(weeks) 
sixWeekList = list(range(maxNumber-6, maxNumber)) 
ax.set_title('Photo', fontsize = 14) 
ax.set_xlabel('Week Number') 

#just pass max and min here 
ax.set_xlim(maxNumber-6, maxNumber) 

ax.set_ylabel('Percentage') 
ax.set_ylim([0,100])