我有一组这样的数据记录:
(s1, t1), (u1, v1), color1
(s2, t2), (u2, v2), color2
.
.
.
(sN, tN), (uN, vN), colorN
Run Code Online (Sandbox Code Playgroud)
在任何记录中,前两个值是线段的终点,第三个值是该线段的颜色.更具体地说,(sn, tn)第一个端点(un, vn)的xy坐标是第二个端点的xy坐标.此外,颜色是具有alpha值的rgb.
通常,任何两个线段都是断开的(意味着它们的端点不一定重合).
如何使用matplotlib使用单个plot调用(或尽可能少)来绘制此数据,因为可能存在数千条记录.
在一个大列表中准备数据并对其进行调用plot太慢了.例如,以下代码无法在合理的时间内完成:
import numpy as np
import matplotlib.pyplot as plt
data = []
for _ in xrange(60000):
data.append((np.random.rand(), np.random.rand()))
data.append((np.random.rand(), np.random.rand()))
data.append('r')
print 'now plotting...' # from now on, takes too long
plt.plot(*data)
print 'done'
#plt.show()
Run Code Online (Sandbox Code Playgroud)
我能够使用None …
是否可以在matplotlib中绘制具有可变线宽的线?例如:
from pylab import *
x = [1, 2, 3, 4, 5]
y = [1, 2, 2, 0, 0]
width = [.5, 1, 1.5, .75, .75]
plot(x, y, linewidth=width)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为线宽需要标量.
注意:我知道*fill_between()*和*fill_betweenx()*.因为这些只能填充x或y方向,所以这些不适用于有斜线的情况.希望填充总是垂直于线.这就是寻求可变宽度线的原因.
我有两个列表如下:
latt=[42.0,41.978567980875397,41.96622693388357,41.963791391892457,...,41.972407378075879]
lont=[-66.706920989908909,-66.703116557977069,-66.707351643324543,...-66.718218142021925]
Run Code Online (Sandbox Code Playgroud)
现在我想将它绘制成一条线,将每个10个'latt'和'lont'记录分开作为一个时期并给它一个独特的颜色.我该怎么办?
我想知道是否有一种方法可以在垂直渐变下填充pyplot曲线,就像在这个快速模型中一样:

我在StackOverflow上发现了这个黑客,我不介意多边形,如果我能弄清楚如何使颜色贴图垂直:如何在Python matplotlib中的曲线下填充彩虹色