我想用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值?
答案 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
您可能希望Line
或TimeSeries
的工作方式类似 - 只需查看示例以获取更多详细信息和更多配置 - 例如添加标题,标签等。
请注意,您可以使用其他输出方法 - 笔记本,文件或服务器。请参阅此处的文档: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)