2016-07-22 94 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

,还有更多。因此,我不会重复本论坛其他地方所说的话。