使用Datashader和HoloView的具有多种颜色和图例的时间序列

2024-09-27 00:18:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想绘制一个带有3列的timeseries数据帧,每条曲线一列。我希望每条曲线都有自己的颜色,并显示一个图例,默认情况下hvplot()

以下是一个独立的示例:

import numpy as np
import pandas as pd
import hvplot.pandas
import datetime
from holoviews.operation.datashader import datashade

n=1000
start = datetime.datetime(2010, 10, 1, 0)   # Start time
datetimerange = [start + datetime.timedelta(minutes=1)*i for i in range(n)]
A = np.random.randint(5, size=n)
B = np.random.randint(20, 40, size=n)
C = np.random.randint(10, 20, size=n)
d = {'datetime': datetimerange, 'A': A, 'B': B, 'C': C}
df = pd.DataFrame(d).set_index('datetime')

df.hvplot(cmap=['red', 'blue', 'green']) + datashade(df.hvplot(cmap=['red', 'blue', 'green']))

以下是结果(左侧没有datashader,右侧有datashader):

enter image description here

将绘图传递到datashader时,颜色和图例将丢失。使用hvplotdatashade=True参数具有相同的结果

a tutorial on timeseries plotting in the Datashader documentation但是它非常复杂,它使用datashader.transfer_functions.shade()作为操作图的基础,而没有太多介绍它是如何工作的和the API isn't much clearer。我只想维护bokeh/hvplot默认提供的这些基本绘图功能,我不确定datashader不保留这些功能的原因,所以我不知道要修复什么

如何向datashader发送信号以保留不同的颜色并绘制图例


Tags: importdfsizedatetime颜色asnprandom
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:33

这里有一半的答案,不幸的是,这并没有给出一个传奇。请注意.hvplot()内置了参数datashade=True

df.reset_index().melt(id_vars='datetime').hvplot.line(
    x='datetime', 
    y='value', 
    by='variable', 
    datashade=True, 
    dynamic=False,
)

相关问题 更多 >

    热门问题