шейдер данных меняет цвет для каждой даты - PullRequest
0 голосов
/ 18 апреля 2020

Для диаграммы рассеяния с даташедером я хочу включить в график понятие времени. Потенциально с использованием цвета.

В настоящее время

import numpy as np
import pandas as pd
import seaborn as sns

date_values = ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04']
result = []
for d in date_values:
    print(d)
    df = pd.DataFrame(np.random.randn(10000, 2), columns=list('AB'))
    df.columns = ['value_foo', 'value_bar']
    df['dt'] = d
    df['dt'] = pd.to_datetime(df['dt'])
    result.append(df)

df =  pd.concat(result)    
display(df.head())

import holoviews as hv
import holoviews.operation.datashader as hd
hv.extension("bokeh", "matplotlib") 

import datashader as ds
import datashader.transfer_functions as tf


cvs = ds.Canvas().points(df, 'value_foo', 'value_bar')
from colorcet import fire
#tf.set_background(tf.shade(cvs, cmap=fire),"black")
tf.shade(cvs)

#sns.jointplot(x="value_foo", y="value_bar", data=df, hue='dt')

Дает enter image description here

Однако теперь разные даты не различимы. Как я могу включить информацию о дате (например, используя цвет) при построении?

1 Ответ

1 голос
/ 19 апреля 2020

Datashader можно раскрасить, используя любой категориальный столбец. Здесь у вас есть только четыре отдельные даты, которые уже работают как категориальные, но если у вас много дат, вы сначала захотите связать их в подходящий набор диапазонов дат (например, менее 256 итоговых значений, если вы использовать 256-цветовую карту цветов).

В любом случае, если у вас есть категориальный столбец c, передайте agg=ds.count_cat('c') на ваш вызов .points(), и вы получите график, раскрашенный по дате.

См. График 'pickup_hour' в https://examples.pyviz.org/nyc_taxi/ для примеров.

...