python 堆积面积图散景
python Stacked area chart Bokeh
我正在尝试创建一个堆积面积图,它按国家/地区显示客户数量。
所以我的数据框是:
date people country
2021-11-18 509 USA
2021-11-18 289 France
2021-11-18 234 Germany
2021-11-18 148 Poland
2021-11-18 101 China
我不懂如何编辑图形设计(颜色)。
table.groupby(['date','country'])['people'].sum().unstack().plot(
kind='area',
figsize=(10,4))
我也尝试使用 Bokeh 库来实现漂亮的可视化,但我不知道如何编写代码
感谢您的帮助。这是我的第一个 post。对不起,如果我错过了什么。
您应该为源添加颜色,或者您可以在散景中使用调色板。请检查 here.
我认为您正在 bokeh
.
中寻找 varea_stack()
-函数
我的解决方案基于varea_stack
-example,这是官方文档的一部分。
假设这是您的数据(我在当天添加的):
text = """date people country
2021-11-18 509 USA
2021-11-18 289 France
2021-11-18 234 Germany
2021-11-18 148 Poland
2021-11-18 101 China
2021-11-19 409 USA
2021-11-19 389 France
2021-11-19 134 Germany
2021-11-19 158 Poland
2021-11-19 191 China"""
首先我将数据以与示例相同的形式引入:
from io import StringIO
import pandas as pd
df = pd.read_csv(StringIO(text), sep='\s+', parse_dates=True, index_col=0)
df = df.groupby(['date','country']).sum().unstack()
df.columns = df.columns.droplevel(0)
df.index.name=None
df.columns.name=None
现在 DataFrame 看起来像这样:
China France Germany Poland USA
2021-11-18 101 289 234 148 509
2021-11-19 191 389 134 158 409
现在剩下的就很简单了。如果您的索引是 DatetimeIndex
,则必须修改散景图的 x_axis_type
。我为下面的情节做了这个。
from bokeh.palettes import brewer
from bokeh.plotting import figure, show, output_notebook
output_notebook()
n = df.shape[1]
p = figure(x_axis_type='datetime')
p.varea_stack(stackers=df.columns, x='index', source=df, color=brewer['Spectral'][n],)
show(p)
输出如下所示:
您可以根据需要使用 color
关键字重新定义颜色。
我正在尝试创建一个堆积面积图,它按国家/地区显示客户数量。
所以我的数据框是:
date people country
2021-11-18 509 USA
2021-11-18 289 France
2021-11-18 234 Germany
2021-11-18 148 Poland
2021-11-18 101 China
我不懂如何编辑图形设计(颜色)。
table.groupby(['date','country'])['people'].sum().unstack().plot(
kind='area',
figsize=(10,4))
我也尝试使用 Bokeh 库来实现漂亮的可视化,但我不知道如何编写代码
感谢您的帮助。这是我的第一个 post。对不起,如果我错过了什么。
您应该为源添加颜色,或者您可以在散景中使用调色板。请检查 here.
我认为您正在 bokeh
.
varea_stack()
-函数
我的解决方案基于varea_stack
-example,这是官方文档的一部分。
假设这是您的数据(我在当天添加的):
text = """date people country
2021-11-18 509 USA
2021-11-18 289 France
2021-11-18 234 Germany
2021-11-18 148 Poland
2021-11-18 101 China
2021-11-19 409 USA
2021-11-19 389 France
2021-11-19 134 Germany
2021-11-19 158 Poland
2021-11-19 191 China"""
首先我将数据以与示例相同的形式引入:
from io import StringIO
import pandas as pd
df = pd.read_csv(StringIO(text), sep='\s+', parse_dates=True, index_col=0)
df = df.groupby(['date','country']).sum().unstack()
df.columns = df.columns.droplevel(0)
df.index.name=None
df.columns.name=None
现在 DataFrame 看起来像这样:
China France Germany Poland USA
2021-11-18 101 289 234 148 509
2021-11-19 191 389 134 158 409
现在剩下的就很简单了。如果您的索引是 DatetimeIndex
,则必须修改散景图的 x_axis_type
。我为下面的情节做了这个。
from bokeh.palettes import brewer
from bokeh.plotting import figure, show, output_notebook
output_notebook()
n = df.shape[1]
p = figure(x_axis_type='datetime')
p.varea_stack(stackers=df.columns, x='index', source=df, color=brewer['Spectral'][n],)
show(p)
输出如下所示:
您可以根据需要使用 color
关键字重新定义颜色。