Holoviews每个类别的颜色

时间:2017-12-05 15:22:15

标签: python bokeh holoviews

我最近一直在使用散景进行绘图。我刚刚发现了全息视图并希望绘制一个基本的盒子图。

在我的盒子图中,我正在尝试按照我将数据分组的类别进行着色。这是我正在使用的代码:

hv.extension('bokeh') %opts BoxWhisker (box_color='blue') boxwhisker = hv.BoxWhisker(pool_ride_distance_time_year_less_hour, ['total_time', 'customer'], 'amount') plot_opts = dict(show_legend=False, width=800, height=400)

我试图根据客户变量(这是一个是/否的虚拟变量)对它进行不同的着色。当我尝试在box_color中包含一个列表时,它不起作用。在数据集中还包括一个带颜色的额外变量也无法解决问题。有关如何使其工作的任何想法?谢谢!

2 个答案:

答案 0 :(得分:3)

HoloViews中的大多数元素都有一个color_index绘图选项,允许按特定变量着色。在这里使用您的示例,我们通过'客户'变量并使用Set1色彩映射为box_color定义HoloViews Cycle

data = (np.random.randint(0, 3, 100), np.random.randint(0, 5, 100), np.random.rand(100))
boxwhisker = hv.BoxWhisker(data, ['total_time', 'customer'], 'amount')
plot_opts = dict(show_legend=False, width=800, height=400, color_index='customer')
style_opts = dict(box_color=hv.Cycle('Set1'))
boxwhisker.opts(plot=plot_opts, style=style_opts)

如果您想定义一组自定义颜色,您还可以像这样定义一个显式循环:Cycle(values=['#ffffff', ...])

答案 1 :(得分:1)

您可以使用holoviews或hvplot为每个类别的箱线图着色。
两种可能的解决方案是:

f=open("file.php","w+")
f.write(createPHP())
f.close()
sub=subprocess.Popen(['drush','scr','file.php'])
ret=sub.communicate()
print(ret)

1),如下所示在数据框中使用 .hvplot()

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

df = pd.DataFrame({
    'total_time': np.random.randint(0, 3, 100),
    'customer': np.random.randint(0, 5, 100),
    'amount': np.random.rand(100)
})

2)或使用 .opts(box_color ='your_variable')并且仅使用全息视图:

df.hvplot.box(y='amount', by=['total_time', 'customer'], color='customer')

这将导致以下绘图,在这种情况下,每个客户都会得到自己的颜色: hvplot boxplot different color per category