为了账号安全,请及时绑定邮箱和手机立即绑定

如何在matplotlib中绘制渐变色线?

如何在matplotlib中绘制渐变色线?

牧羊人nacy 2019-12-12 10:10:10
为了以一般形式陈述它,我正在寻找一种使用matplotlib将具有渐变色线的多个点连接起来的方法,但是在任何地方都找不到。更具体地说,我正在绘制一条带有一条色线的2D随机游动图。但是,由于这些点具有相关的顺序,因此我想查看该图并查看数据已移至何处。渐变色线可以解决问题。或透明度逐渐变化的线。我只是想改善数据的虚拟化。看看R的ggplot2软件包产生的这张精美图片。我正在matplotlib中寻找相同的图片。谢谢。
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

注释太长,因此只想确认这LineCollection比在行子段上进行for循环要快得多。


LineCollection方法在我手中要快得多。


# Setup

x = np.linspace(0,4*np.pi,1000)

y = np.sin(x)

MAP = 'cubehelix'

NPOINTS = len(x)

我们将针对上面的LineCollection方法测试迭代绘图。


%%timeit -n1 -r1

# Using IPython notebook timing magics

fig = plt.figure()

ax1 = fig.add_subplot(111) # regular resolution color map

cm = plt.get_cmap(MAP)

for i in range(10):

    ax1.set_color_cycle([cm(1.*i/(NPOINTS-1)) for i in range(NPOINTS-1)])

    for i in range(NPOINTS-1):

        plt.plot(x[i:i+2],y[i:i+2])

1 loops, best of 1: 13.4 s per loop


%%timeit -n1 -r1 

fig = plt.figure()

ax1 = fig.add_subplot(111) # regular resolution color map

for i in range(10):

    colorline(x,y,cmap='cubehelix', linewidth=1)

1 loops, best of 1: 532 ms per loop


如果您想要平滑的渐变并且只有几个点,那么按照当前选择的答案提供的方法,对线进行向上采样以获得更好的颜色渐变仍然是一个好主意。



查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 482 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信