繁体   English   中英

Matplotlib线图:不显示数据点

[英]Matplotlib line plot: data point not displayed

我有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()

以下是输出: 在此处输入图片说明 注意x轴。 根据该图,第0行和第60000行之间没有'1'值。

但是当我放大图片时: 在此处输入图片说明

值“ 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行的行。 结果: 在此处输入图片说明

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

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

如果您的数据中确实确实分布着非常尖锐的尖峰,则可以使用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()

...结果如下:

以上代码的结果

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM