给定[1,5,7,3,5,10,3,6,8]
matplotlib.pyplot
的坐标,如何突出显示或着色线的不同部分。例如,列表中的坐标1-3([1,5,7,3]
)表示属性a
。如何为该行的颜色着色并在图例中标记它?
编辑:有问题的列表包含数万个元素。我正在尝试突出显示列表的特定部分。从目前为止的答案来看,假设我必须逐个绘制每个片段是正确的吗?没有办法说“从x1坐标选择线段到x2坐标,改变线条的颜色”
答案 0 :(得分:6)
尝试使用此尺寸:
from matplotlib import pyplot as plt
y1 = [1,5,7,3]
x1 = range(1,5)
y2 = [3,5,10,3,6,8]
x2 = range(4,len(y2)+4)
plt.plot(x1, y1, 'go-', label='line 1', linewidth=2)
plt.plot(x2, y2, 'rs--', label='line 2')
plt.legend()
plt.show()
会给你:
另外,你也应该看一下这个帮助,它非常有帮助。 : - )
答案 1 :(得分:2)
是的,您需要重新绘制线条,但您可以剪切线条,以便只显示您感兴趣的部分。为此,我创建了一个覆盖代表prop(a)的区域的矩形,然后使用它来创建clip_path
。
import matplotlib.pyplot as plt
from matplotlib.transforms import Bbox
data = [1,5,7,3,5,10,3,6,8]
X0 = 1
X1 = 3
plt.plot(data, label='full results')
# make a rectangle that will be used to crop out everything not prop (a)
# make sure to use data 'units', so set the transform to transData
propArect = plt.Rectangle((X0, min(data)), X1, max(data),
transform=plt.gca().transData)
# save the line so when can set the clip
line, = plt.plot(data,
color='yellow',
linewidth=8,
alpha=0.5,
label='Prop (a)',
)
line.set_clip_path(propArect)
handles, labels = plt.gca().get_legend_handles_labels()
plt.legend(handles, labels)
plt.savefig('highlight.png')
plt.show()
这会导致:
当我绘制线段时,我使用alpha
关键字调整透明度,范围从0到1或透明到实体。我也做了一个更粗的线,超出了原来的结果。