使用Bokeh绘制整个pandas DataFrame

时间:2015-02-22 06:07:47

标签: python pandas bokeh

我想用Bokeh绘制一个完整的pandas DataFrame。即,我正在寻找第三行的Bokeh:

import pandas as pd
income_df = pd.read_csv("income_2013_dollars.csv", sep='\t', thousands=',')
income_df.plot(x="year")

目前有办法做到这一点,还是我必须分别传递每个y值?

2 个答案:

答案 0 :(得分:11)

您可能会发现图表示例很有用:https://github.com/bokeh/bokeh/tree/master/examples/charts

如果你想要一个条形图,那就是:

from bokeh.charts import Bar
Bar(income_df, notebook=True).show()  # assuming the index is corretly set on your df

您可能希望LineTimeSeries的工作方式类似 - 只需查看示例以获取更多详细信息和更多配置 - 例如添加标题,标签等。

请注意,您可以使用其他输出方法 - 笔记本,文件或服务器。请参阅此处的文档:http://bokeh.pydata.org/en/latest/docs/user_guide/charts.html#generic-arguments

更新:(对于如何显示输出的混淆感到抱歉)。指定图表显示类型的另一种方法是使用方法output_notebook()output_file("file.html")output_server(),然后使用show方法。例如

from bokeh.charts import Bar
from bokeh.plotting import output_notebook, show
output_notebook()
bar = Bar(income_df)
show(bar)

但是,您无法执行以下操作

from bokeh.charts import Bar
from bokeh.plotting import output_notebook
output_notebook()
Bar(income_df).show()  # WILL GIVE YOU AN ERROR

两种表演方法不同。

答案 1 :(得分:0)

有关使用Pandas创建条形图的现代信息,请参见本用户指南部分:

https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html#pandas

例如:

from bokeh.io import show, output_file
from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral5
from bokeh.plotting import figure
from bokeh.sampledata.autompg import autompg as df
from bokeh.transform import factor_cmap

output_file("groupby.html")

df.cyl = df.cyl.astype(str)
group = df.groupby('cyl')

source = ColumnDataSource(group)

cyl_cmap = factor_cmap('cyl', palette=Spectral5, factors=sorted(df.cyl.unique()))

p = figure(plot_height=350, x_range=group, title="MPG by # Cylinders",
           toolbar_location=None, tools="")

p.vbar(x='cyl', top='mpg_mean', width=1, source=source,
       line_color=cyl_cmap, fill_color=cyl_cmap)

p.y_range.start = 0
p.xgrid.grid_line_color = None
p.xaxis.axis_label = "some stuff"
p.xaxis.major_label_orientation = 1.2
p.outline_line_color = None

show(p)

enter image description here