2017-09-05 77 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])