给定[1,5,7,3,5,10,3,6,8]for的坐标matplotlib.pyplot,如何突出显示或着色线的不同部分.例如,[1,5,7,3]列表中的坐标1-3()表示属性a.如何为该行的颜色着色并在图例中标记它?
编辑:有问题的列表包含数万个元素.我正在尝试突出显示列表的特定部分.从目前为止的答案来看,假设我必须逐一绘制每个部分是正确的吗?没有办法说"从x1坐标到x2坐标选择线段,改变线的颜色"
试试这个尺码:
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()
Run Code Online (Sandbox Code Playgroud)
会给你:

此外,你也应该看看帮助,它非常有帮助.:-)
是的,您需要重新绘制线条,但您可以剪裁线条,以便只有您感兴趣的部分可见。为此,我创建一个覆盖表示 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()
Run Code Online (Sandbox Code Playgroud)
这导致:

当我绘制线段时,我使用关键字调整透明度alpha,范围从0-1或透明到实心。我还把它画成了一条较粗的线,以超出原来的结果。
| 归档时间: |
|
| 查看次数: |
8278 次 |
| 最近记录: |