首页 > 解决方案 > 如何使不同的列在 holoviews / hvplot 中呈现为不同的颜色?

问题描述

我有一个带有两列时间序列数据的熊猫数据框。在我的实际数据中,这些列足够大,以至于如果没有数据着色器,渲染就很笨拙。我正在尝试比较这两个时间序列中的事件。但是,我需要能够分辨出哪个数据点来自哪一列。下面是一个简单的功能示例。如何让 A 列和 B 列使用不同的颜色图?

import numpy as np
import hvplot.pandas
import pandas as pd

A = np.random.randint(10, size=10000)
B = np.random.randint(30, size=10000)
d = {'A':A,'B':B}
df = pd.DataFrame(d)

df.hvplot(kind='scatter',datashade=True, height=500, width=1000, dynspread=False)

标签: pandasholoviews

解决方案


您将不得不使用分别计算每个类别的 count_cat 聚合器,例如在上面的示例中,它看起来像这样:

import datashader as ds
df.hvplot(kind='scatter', aggregator=ds.count_cat('Variable'), datashade=True,
          height=500, width=1000)

这里'Variable'对应于group_labelhvplot 分配给列的默认值。如果您提供了不同group_label的,则必须更新聚合器以匹配。但是,除了显式提供聚合器之外,您还可以使用by关键字:

df.hvplot(kind='scatter', by='Variable', datashade=True,
          height=500, width=1000)

一旦 hvplot 0.3.1 发布,您还可以提供一个明确的cmap,例如:

df.hvplot(kind='scatter', by='Variable', datashade=True,
          height=500, width=1000, cmap={'A': 'red', 'B': 'blue'})

在此处输入图像描述


推荐阅读