Python散景饼图颜色,如何改变
Python Bokeh pie chart colors, how to change
我有一个调色板:
chart_colors = ['#44e5e2', '#e29e44', '#e244db',
'#d8e244', '#eeeeee', '#56e244', '#007bff', 'black']
以及由 Bokeh 生成的饼图。
x = Counter({
'Submitted': 179,
'Approved': 90,
'Denied': 80
})
data = pd.DataFrame.from_dict(dict(x), orient='index').reset_index().rename(
index=str, columns={0: 'value', 'index': 'claimNumber'})
data['angle'] = data['value']/sum(x.values()) * 2*pi
data['color'] = Category20c[len(x)]
p = figure(plot_height=200,
tooltips="@claimNumber: @value",
name='claimChart')
p.wedge(x=0, y=1, radius=0.28,
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
line_color="white", fill_color='color', legend='claimNumber', source=data)
curdoc().add_root(p)
现在 fill_color='color' 并且颜色定义为 'data['color'] = Category20c[len(x)]'。
在旧版本中可以提供 'color' (p.wedge(..., color=...),但我使用的是 Bokeh 0.13.0,所以我只有 fill_color='color' 每种颜色。
如何将数据['color']更改为'chart_colors'数组中的颜色?
but I use Bokeh 0.13.0, so I have only fill_color='color' for each color.
这不是真的。 color
参数可用于任何字形方法(包括 wedge
)只是为了方便同时设置 fill_color
和 line_color
。你的问题有点令人困惑,因为你的调色板大小与你的数据大小不匹配,但这里有一个完整的例子,它只是使用调色板,截断:
from collections import Counter
from math import pi
import pandas as pd
from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.transform import cumsum
chart_colors = ['#44e5e2', '#e29e44', '#e244db',
'#d8e244', '#eeeeee', '#56e244', '#007bff', 'black']
x = Counter({
'Submitted': 179,
'Approved': 90,
'Denied': 80
})
data = pd.DataFrame.from_dict(dict(x), orient='index').reset_index().rename(
index=str, columns={0: 'value', 'index': 'claimNumber'})
data['angle'] = data['value']/sum(x.values()) * 2*pi
data['color'] = chart_colors[:len(x)]
p = figure(plot_height=350, title="Pie Chart", toolbar_location=None)
p.wedge(x=0, y=1, radius=0.28,
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
color='color', legend='claimNumber', source=data)
p.axis.axis_label=None
p.axis.visible=False
p.grid.grid_line_color = None
show(p)
我有一个调色板:
chart_colors = ['#44e5e2', '#e29e44', '#e244db',
'#d8e244', '#eeeeee', '#56e244', '#007bff', 'black']
以及由 Bokeh 生成的饼图。
x = Counter({
'Submitted': 179,
'Approved': 90,
'Denied': 80
})
data = pd.DataFrame.from_dict(dict(x), orient='index').reset_index().rename(
index=str, columns={0: 'value', 'index': 'claimNumber'})
data['angle'] = data['value']/sum(x.values()) * 2*pi
data['color'] = Category20c[len(x)]
p = figure(plot_height=200,
tooltips="@claimNumber: @value",
name='claimChart')
p.wedge(x=0, y=1, radius=0.28,
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
line_color="white", fill_color='color', legend='claimNumber', source=data)
curdoc().add_root(p)
现在 fill_color='color' 并且颜色定义为 'data['color'] = Category20c[len(x)]'。
在旧版本中可以提供 'color' (p.wedge(..., color=...),但我使用的是 Bokeh 0.13.0,所以我只有 fill_color='color' 每种颜色。
如何将数据['color']更改为'chart_colors'数组中的颜色?
but I use Bokeh 0.13.0, so I have only fill_color='color' for each color.
这不是真的。 color
参数可用于任何字形方法(包括 wedge
)只是为了方便同时设置 fill_color
和 line_color
。你的问题有点令人困惑,因为你的调色板大小与你的数据大小不匹配,但这里有一个完整的例子,它只是使用调色板,截断:
from collections import Counter
from math import pi
import pandas as pd
from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.transform import cumsum
chart_colors = ['#44e5e2', '#e29e44', '#e244db',
'#d8e244', '#eeeeee', '#56e244', '#007bff', 'black']
x = Counter({
'Submitted': 179,
'Approved': 90,
'Denied': 80
})
data = pd.DataFrame.from_dict(dict(x), orient='index').reset_index().rename(
index=str, columns={0: 'value', 'index': 'claimNumber'})
data['angle'] = data['value']/sum(x.values()) * 2*pi
data['color'] = chart_colors[:len(x)]
p = figure(plot_height=350, title="Pie Chart", toolbar_location=None)
p.wedge(x=0, y=1, radius=0.28,
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
color='color', legend='claimNumber', source=data)
p.axis.axis_label=None
p.axis.visible=False
p.grid.grid_line_color = None
show(p)