首页 > 编程语言 > 详细

python如何让一条线拥有多种颜色、线型?

时间:2021-03-28 12:53:40      阅读:122      评论:0      收藏:0      [点我收藏+]

一、官方文档

技术分享图片

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib.colors import ListedColormap, BoundaryNorm

x = np.linspace(0, 3 * np.pi, 500)
y = np.sin(x)

#dydx用于说明线段颜色赋值的关联值
dydx = np.linspace(0, 3 * np.pi, 500)

#创建一组线段,方便赋予不同颜色,
#其维度为 线段数量 x 每个线段的点的个数 x 2(每个点的x坐标和y坐标)
#reshape(-1, 1, 2)中的-1表示该位置上的值自动填充,此时其维度为500 x 1 x 2
points = np.array([x, y]).T.reshape(-1, 1, 2) 

#下列语句将points 前499个点与后499个点按第二个方向拼接,形成499 x 2 x 2的数组
#相当于制作了499个连续相连的线段,每个线段两个点,上一个线段的尾点即下一个线段的起点
segments = np.concatenate([points[:-1], points[1:]], axis=1)
fig, axs = plt.subplots(1, 1)

#下面开始设置各个线段的参数
cmap = ListedColormap([‘r‘, ‘g‘, ‘b‘])

#将数据规范到-1到1之间,且按照[-1, -0.5, 0.5, 1]中的节点分成cmap.N(3)个区间,
#赋予各区间一个整数,相当于制定分类规则
norm = BoundaryNorm([0, np.pi, 2*np.pi, 3*np.pi], cmap.N)
lc = LineCollection(segments, cmap=cmap, norm=norm)

#传入各线段颜色的关联值,基于该数据以及上述规则判断各线段的颜色
lc.set_array(dydx)
lc.set_linewidth(2)
line = axs.add_collection(lc)

#添加颜色条
fig.colorbar(line)

axs.set_xlim(x.min(), x.max())
axs.set_ylim(-1.1, 1.1)

plt.show()

二、个人思路

技术分享图片

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 3 * np.pi, 500)
y = np.sin(x)

x1 = x[:int(500/3)]
x2 = x[int(500/3):int(500/3)*2]
x3 = x[int(500/3)*2:]

y1 = np.sin(x1)
y2 = np.sin(x2)
y3 = np.sin(x3)

plt.plot(x1,y1)
plt.plot(x2,y2,linestyle = ‘-.‘)
plt.plot(x3,y3,linestyle = ‘:‘)

参考资料:

python如何让一条线拥有多种颜色、线型?

原文:https://www.cnblogs.com/lhjc/p/14587809.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!