2016-07-22 96 views
2

試圖將缺失值(無)或numpynp.nan添加到我的matplot圖中。一般而言,這是可能有這樣的缺失值:開始時缺少值 - matplotlib

import matplotlib.pyplot as plt 

fig = plt.figure(1) 

x = range(10) 
y = [1, 2, None, 0, 1, 2, 3, 3, 5, 10] 

ax = fig.add_subplot(111) 
ax.plot(x, y, 'ro') 

plt.show() 

不過貌似缺失值不容易在圖形的一開始就支持。

import matplotlib.pyplot as plt 

fig = plt.figure(1) 

x = range(10) 
y = ([None]*5)+[x for x in range(5)] 

ax = fig.add_subplot(111) 
ax.plot(x, y, 'ro') 

plt.show() 

這顯示:

但我想先從x=0,而不是x=5。 希望有一個簡單的方法來解決這個問題。

回答

4

空值似乎對第二個繪圖沒有影響的原因是由於自動確定了軸對象的x和y限制。在第一種情況下,您擁有跨越您所關心的整個x/y範圍的「真實」數據,並且軸會自動縮放以適應此數據。在第二個示例中,您的真實數據僅涵蓋x值的上限範圍,因此matplotlib將截斷x軸,因爲沒有任何內容可以顯示。

解決方法是明確指定軸的xlims。您可以使用您的值x來確定這些應該是什麼。

plt.xlim(x[0], x[-1]) 
3

Matplotlib自動爲x軸和y軸選擇參數。在這種情況下,它只顯示可以可視化的點。如果x或y是「無」,則不可視化。如果您還想看到圖中的「空白」部分,請自行調整軸範圍。

如何做到這一點,已經回答了similiar問題多次在這個論壇上,如:

Matplotlib/pyplot: How to enforce axis range?

Python, Matplotlib, subplot: How to set the axis range?

setting y-axis limit in matplotlib

,還有更多。因此,我不會重複本論壇其他地方所說的話。