Colors 如何使用调色板视图中的十六进制设置线条颜色

Colors 如何使用调色板视图中的十六进制设置线条颜色,colors,holoviews,line-plot,Colors,Holoviews,Line Plot,我想基于第三列手动指定HoloView中线段的颜色 我知道hv.Path的例子,但是,这减少了一段线的长度,这是我不想要的。 我可以使用bokeh或matplotlib来完成,但使用HoloView无法正确完成 def get_color(最小值、最大值、值、调色板): 返回调色板[(int((val-min_-val)*((len(调色板)-1)/(max_-val-min_-val))+.5])] 从bokeh.io导入输出文件,显示 从bokeh.plotting导入图形 y=[0,1,

我想基于第三列手动指定HoloView中线段的颜色

我知道hv.Path的例子,但是,这减少了一段线的长度,这是我不想要的。 我可以使用bokeh或matplotlib来完成,但使用HoloView无法正确完成

def get_color(最小值、最大值、值、调色板):
返回调色板[(int((val-min_-val)*((len(调色板)-1)/(max_-val-min_-val))+.5])]
从bokeh.io导入输出文件,显示
从bokeh.plotting导入图形
y=[0,1,2,3,4,5]
x=[0]*len(y)
z=[1,2,3,4,5]
p=图形(绘图宽度=500,绘图高度=200,工具=“”)
[p.line([x[i],x[i+1]],[y[i],y[i+1]],line_color=get_color(1,5,z,Viridis256),line_width=4)表示枚举(z)中的i,z]
表演(p)
导入numpy
将matplotlib.pyplot作为plt导入
从matplotlib.collections导入LineCollection
#当前的行格式:
行=[(0,1,2,3,4),(4,5,6,7,8)],并,
[(0, 1, 2, 3, 4), (0, 1, 2, 3, 4)],
[(0, 1, 2, 3, 4), (8, 7, 6, 5, 4)],
[(4, 5, 6, 7, 8), (0, 1, 2, 3, 4)]]
#将其重新格式化为“LineCollection”所期望的格式:
lines=[zip(x,y)表示x,y在行中]
z=np.数组([0.1,9.4,3.8,2.0])
图,ax=plt.子批次()
线条=线条集合(线条,数组=z,cmap=plt.cm.rainbow,线宽=5)
ax.添加_集合(行)
图颜色条(线)
#手动添加艺术家不会重新缩放绘图,因此我们需要自动缩放
ax.自动缩放()
plt.show()
从bokeh.io导入输出文件,显示
从bokeh.plotting导入图形
y=[0,1,2,3,4,5]
x=[0]*len(y)
z=[1,2,3,4,5]
p=图形(绘图宽度=500,绘图高度=200,工具=“”)
[p.line([x[i],x[i+1]],[y[i],y[i+1]],line_color=get_color(1,5,z,Viridis256),line_width=4)表示枚举(z)中的i,z]
表演(p)
从bokeh.palets导入绿色256
curvlst=[hv.enumerate(z)中i,z的曲线([[x[i],y[i]],[x[i+1],y[i+1]],line_color=get_color(1,5,z,Viridis256))
高压覆盖层(曲线)
警告:param.Curve26666:使用仅用于参数的机制设置非参数属性line_color=#440154我想我发现了

从bokeh.palets导入绿色256
def get_颜色(最小值、最大值、值、调色板):
返回调色板[(int((val-min_-val)*((len(调色板)-1)/(max_-val-min_-val))+.5])]
curvlst=[hv.曲线([[x[i],y[i]],[x[i+1],y[i+1]])。选择(颜色=获取颜色(1,5,z,绿色256))作为枚举(z)中的i,z)
高压覆盖层(曲线)

请告诉我这是一个很好的练习,或者如果你知道一个更好的方法。

你可以通过稍微重写函数来使用所谓的dim变换:

def get_color(val, min_val, max_val, palette):
    return [palette[(int((val-min_val)*((len(palette)-1)/(max_val-min_val))+.5))]]

y = [0,1,2,3,4,5]
x = [0]*len(y)
z = [1,2,3,4,5]

hv.NdOverlay({z: hv.Curve(([x[i],x[i+1]], [y[i],y[i+1]])) for i, z in enumerate(z)}, kdims=['z']).opts(
    'Curve', color=hv.dim('z', get_color, 1, 5, Viridis256))
也就是说,我认为您不应该手动绘制颜色曲线,所以我打开了: