我正在使用Bokeh(http://bokeh.pydata.org/en/latest/docs/user_guide.html)绘制条形图。这是一个了不起的工具,但与此同时我认为它现在有点不成熟。我有一个堆积条形图,x轴上有30个类别,每个类别对应40个类别。我无法找到能够让我改变颜色的功能(现在颜色非常模糊)并将图例与顶部对齐。或者,如果某人悬停在该颜色上时可以打开信息框,这可能会有所帮助。如果可以的话,我有一点线索。
http://bokeh.pydata.org/en/latest/docs/user_guide/charts.html#bar
我的例子与此类似,只是我有很多变量。
有什么建议吗? 更新: 我尝试了以下解决方案,但看起来Bar()存在一些问题。它无法识别Bar()。
import bokeh.plotting as bp
data24 =OrderedDict()
for i in range(10):
data24[i] = np.random.randint(2, size=10)
figut = bp.figure(tools="reset, hover")
s1 = figut.Bar(data24, stacked= True,color=colors )
s1.select(dict(type=HoverTool)).tooltips = {"x":"$index"}
运行它我得到:
AttributeError: 'Figure' object has no attribute 'Bar'
这是我得到的酒吧颜色。没有办法区分颜色。
答案 0 :(得分:1)
我已经在bokeh source code进行了挖掘,似乎bokeh.charts.Bar
方法除了一些关键字参数之外。这些属性可以是Builder
类的属性,其中包含palette
属性,定义为here。您应该能够将此作为参数传递给Bar
。
Bar(...,palette=['red','green','blue'],...)
通过修改散景提供的example来测试这个:
from collections import OrderedDict
import pandas as pd
from bokeh.charts import Bar, output_file, show
from bokeh.sampledata.olympics2014 import data
df = pd.io.json.json_normalize(data['data'])
# filter by countries with at least one medal and sort
df = df[df['medals.total'] > 0]
df = df.sort("medals.total", ascending=False)
# get the countries and we group the data by medal type
countries = df.abbr.values.tolist()
gold = df['medals.gold'].astype(float).values
silver = df['medals.silver'].astype(float).values
bronze = df['medals.bronze'].astype(float).values
# build a dict containing the grouped data
medals = OrderedDict(bronze=bronze, silver=silver, gold=gold)
output_file("stacked_bar.html")
bar = Bar(
medals, countries, title="Stacked bars", stacked=True,
palette=['brown', 'silver', 'gold'])
show(bar)
答案 1 :(得分:0)
原始问题和其他答案都已过时。 time
API已于多年前弃用并删除。有关现代散景中堆积的条形图,请参见Handling Categorical Data
这是一个完整的示例:
bokeh.charts