Matplotlib线图:数据点未显示

时间:2018-02-16 07:19:43

标签: python-3.x matplotlib

我有一个147637行和175列的多维数组。现在我想只绘制一列,即最后一列。除了这5行外,最后一列在所有行中都填充0:29528,59051,88583,118110,147636。这些行的值为1。 下面是我用来绘制的代码:

import matplotlib.pyplot as plt
workBoundary=-1
fig,(ax1)=plt.subplots(nrows=1,ncols=1)
ax1.plot(allPathsDistance[:,workBoundary],color='maroon')
plt.show()

以下是输出:enter image description here 注意x轴。根据这个数字,没有' 1'第0行和第60000行之间的值。

但是当我放大图片时: enter image description here

A' 1'有价值的数据点出现在它应该的大约第30000行。(确切地说是第29528行)。我无法弄清楚为什么会这样。有人可以帮忙纠正这个吗?我重新启动了Spyder IDE,但这种行为没有改变。

其他信息:

如果编辑x轴限制为不显示0,如下所示:

import matplotlib.pyplot as plt
workBoundary=-1
fig,(ax1)=plt.subplots(nrows=1,ncols=1)
ax1.plot(allPathsDistance[:,workBoundary],color='maroon')  

ax1.set_xlim(left=10)

plt.show()

然后出现第30000行。结果: enter image description here

这似乎表明matplotlib没有在绘图区域的某些位置绘制数据。

版本信息: matplotlib:2.1.0 Spyder:3.1.4 Windows 7的 Python:3.6.3

1 个答案:

答案 0 :(得分:0)

如果您的数据中只有非常尖锐的峰值,您可以使用ax.vlines()确保它们全部可见:

from matplotlib import pyplot as plt
import numpy as np

##setting up the data
allPathsDistance = np.zeros(147637)
allPathsDistance[[29528, 59051, 88583, 118110, 147636]] = 1.0
xvals = np.arange(allPathsDistance.shape[0])

##masking:
mask = allPathsDistance>0

##plotting
fig, ax = plt.subplots()
ax.vlines(xvals[mask], np.zeros_like(xvals[mask]),allPathsDistance[mask])
ax.set_xlim([xvals[0]-1000,xvals[-1]+1000])

plt.show()

......结果如下:

result of above code

希望这有帮助。