我想在特定线上放置标记。我有一个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值列表。我收到以下错误消息。
有趣的是,错误消息中的列表是正确的,这些是标记的正确x轴值。有人知道这个消息是什么意思吗?市场营销人员明确表示,它将采用整数列表。
markevery [None | int | length-2 tuple of int | slice | list/array of int | float | length-2 tuple of float]
答案 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
但是我仍然想知道如果有人有线索或者有一条头,这个错误信息意味着什么。