Python Matplotlib 线图:更改中间的线颜色



我正在尝试从一系列坐标绘制一条连续的线,但我想在特定时刻更改线的颜色。

Input arrays: layerdict['Xc'] = [50.6, 69.4, 69.4, 50.6, **50.6**, **50.2**, 69.8, 69.8, 50.2, **50.2**, **69.053**, 69.12, 69.12] layerdict['Yc'] = [50.6, 50.6, 69.4, 69.4, **50.6**, **50.2**, 50.2, 69.8, 69.8, **50.2**, **50.88**, 50.996, 51.796]

** 仅用于视觉目的

我想将线条的颜色从 (50.6, 50.6( 更改为 (50.2,50.2( 和 (50.2, 50.6( 到 (69.053,5088( 等等......最好的方法是什么?我有一个条件语句,可以检测条件并插入空白值或其他操作

这是我到目前为止所拥有的。

layerdict = {'Xc': [], 'Yc': [], 'Xt': [], 'Yt': []}
with open(inputfilepath, 'r') as ifile:
for item in ifile:
gonematch = gonepattern.match(item)
gtrmatch = gtrpattern.match(item)
if gonematch:
tlist = item.split(' ')
layerdict['Xc'].append(float(tlist[1][1:]))
layerdict['Yc'].append(float(tlist[2][1:]))
elif gtrmatch:
tlist = item.split(' ')
layerdict['Xt'].append(float(tlist[1][1:]))
layerdict['Yt'].append(float(tlist[2][1:]))

plt.plot(layerdict['Xc'], layerdict['Yc'], label='linepath', linewidth=3.5)

plt.xlabel('X')
plt.ylabel('Y')
plt.show(block=True)

示例输入文件将如下所示(仅供参考,我从中提取坐标(

X10 Y10 A10 B10
X11 Y11 A10
X12.4 Y23.5 A5 ...

我会使用 numpy 的 ma 模块中的屏蔽数组。虽然 numpy 数组在索引和数学方面已经比简单列表更好,但屏蔽数组仅在掩码值为 False 的地方自动绘制。但是,您仍然可以简单地使用 data 属性检索整个未屏蔽的数组,因此首先绘制整个数组,然后只绘制一个子集只是两个几乎相同的绘图命令的问题:

import matplotlib.pyplot as plt
import numpy as np
import numpy.ma as ma
layerdict = dict()
layerdict['Xc'] = [50.6, 69.4, 69.4, 50.6, 50.6, 50.2, 69.8, 69.8, 50.2, 50.2, 69.053, 69.12, 69.12]
layerdict['Yc'] = [50.6, 50.6, 69.4, 69.4, 50.6, 50.2, 50.2, 69.8, 69.8, 50.2, 50.88, 50.996, 51.796]
highlightmask = np.ones(len(layerdict['Xc'])).astype(bool)
highlightmask[4:6] = highlightmask[9:11] = False
layerdict['Xc'] = ma.array(layerdict['Xc'])
layerdict['Yc'] = ma.array(layerdict['Yc'], mask=highlightmask)
plt.plot(layerdict['Xc'], layerdict['Yc'].data, label='linepath', linewidth=3.5)
plt.plot(layerdict['Xc'], layerdict['Yc'], 'r', linewidth=3.5)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

相关内容

  • 没有找到相关文章

最新更新