使用matplotlib和markevery在特定点放置标记时出错

时间:2017-08-07 21:39:31

标签: python numpy matplotlib

我想在特定线上放置标记。我有一个TRUE / FALSE列表,说明在x轴上需要标记的位置。这是我正在使用的片段:

markers_on = list(compress(self.x, self.titanic1))
a0.plot(self.x, self.nya, marker='v', markevery=markers_on)

self.titanic1是布尔值列表,self.x是我们的x轴值列表,self.nya是y值列表。我收到以下错误消息。

error message

有趣的是,错误消息中的列表是正确的,这些是标记的正确x轴值。有人知道这个消息是什么意思吗?市场营销人员明确表示,它将采用整数列表。

markevery   [None | int | length-2 tuple of int | slice | list/array of int | float | length-2 tuple of float]

2 个答案:

答案 0 :(得分:2)

如果提供给markevery的列表是整数列表,则将其解释为要标记的值的索引列表。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,1,0.2)
y = np.random.rand(len(x))

boolean= [True, False, False, True, True]
mark = list(np.arange(len(x))[boolean])

plt.plot(x,y, marker="o", markevery=mark)

plt.show()

但请注意,您可以直接向markevery

提供布尔列表
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,1,0.2)
y = np.random.rand(len(x))

boolean= [True, False, False, True, True]

plt.plot(x,y, marker="o", markevery=boolean)

plt.show()

答案 1 :(得分:1)

所以,我想出了一个只绘制标记的工作。 (我先前画了一行。)

markers_x = list(compress(self.x, self.titanic1))
markers_y = list(compress(self.nya, self.titanic1))
markers_y = [i * 1.01 for i in markers_y] # shift the markers up a bit
t1, = a0.plot(markers_x, markers_y, 'bv') # pass t1 later for legend

但是我仍然想知道如果有人有线索或者有一条头,这个错误信息意味着什么。