Matplotlib中的线段

时间:2012-02-24 16:34:21

标签: matplotlib

给定[1,5,7,3,5,10,3,6,8] matplotlib.pyplot的坐标,如何突出显示或着色线的不同部分。例如,列表中的坐标1-3([1,5,7,3])表示属性a。如何为该行的颜色着色并在图例中标记它?

编辑:有问题的列表包含数万个元素。我正在尝试突出显示列表的特定部分。从目前为止的答案来看,假设我必须逐个绘制每个片段是正确的吗?没有办法说“从x1坐标选择线段到x2坐标,改变线条的颜色”

2 个答案:

答案 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()

会给你:

enter image description here

另外,你也应该看一下这个帮助,它非常有帮助。 : - )

答案 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()

这会导致: enter image description here

当我绘制线段时,我使用alpha关键字调整透明度,范围从0到1或透明到实体。我也做了一个更粗的线,超出了原来的结果。