【问题标题】:Matplotlib line plot: data point not displayedMatplotlib 线图:数据点不显示
【发布时间】:2018-02-16 07:19:43
【问题描述】:

我有一个 147637 行和 175 列的多维数组。现在我只想绘制其中一个 column ,即最后一列。除了这 5 行:29528、59051、88583、118110、147636 之外,最后一列的所有行都用 0 填充。这些行的值为 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 间谍:3.1.4 Windows 7的 Python:3.6.3

【问题讨论】:

  • 这应该不是分辨率问题。但是我在复制问题时遇到了问题;似乎工作和非工作代码是相同的?输出对我来说似乎是正确的:i.stack.imgur.com/VdmOG.png
  • 我的错。我在附加信息部分复制的代码缺少一条语句。
  • 上图是在没有set_xlim的情况下生成的,所以它仍然适用。
  • 嗯,我无法回答为什么你不能重现这个。但这是我实际面临的代码和问题。我用谷歌搜索了这个现象,但我找不到任何东西,因此在这里发布。
  • 一次,创建一个minimal reproducible example,即一段可以从问题中复制并运行的代码。您显示的情节看起来像您在显示这些线条之前做了其他事情。这样可以确保我们在这里谈论的不是同一件事。

标签: python-3.x matplotlib


【解决方案1】:

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

...结果如下:

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 2020-05-05
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2014-08-03
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多