如何改变bokeh.charts轴标签大小?

时间:2016-10-27 00:48:26

标签: python data-visualization jupyter bokeh

我使用的是Bokeh 0.11.1,pip install --upgrade bokeh报告我使用的是最新版本。

如果使用bokeh.plotting,我可以确定如何更改散景x轴文本大小参数,但不能在散景图表中更改。下面的代码,如果在Jupyter笔记本中运行,将显示非常紧凑的x轴标签。我希望字体更小 - 有关如何实现此目的的任何提示吗?

import pandas as pd
data = pd.read_csv("https://raw.githubusercontent.com/pm0kjp/datastore/master/river_data.csv")

import bokeh.charts
import bokeh.plotting
bokeh.plotting.output_notebook()

tooltips=[
    ('Water Site ', '$x'),
    ('Average of Enterococcus Count ', '$y')
]

p = bokeh.charts.Scatter(data, x='Site', y='EnteroCount', 
        title="Swimming Holes By Average Enterococcus Count", ylabel="Enterococcus Count", tooltips=tooltips)
p.width=1000
bokeh.charts.show(p)

文档会建议我可以简单地添加 p.yaxis.axis_label_text_font_size = "8pt",但如果我这样做,我就会收到错误 AttributeError: 'Chart' object has no attribute 'yaxis'

1 个答案:

答案 0 :(得分:3)

有一个专用于styling visual properties的完整用户指南部分,包括如何设置axis labels样式。由于bokeh.chartsbokeh.plotting创建的绘图都解析为同一组低级别对象,因此在任何一种情况下设置属性都是相同的:

p.yaxis.axis_label_text_font_size = "8pt"

以下是0.12.3的完整工作示例:

In [1]: import bokeh

In [2]: bokeh.__version__
Out[2]: '0.12.3'

In [3]: import pandas as pd
   ...: data = pd.read_csv("https://raw.githubusercontent.com/pm0kjp/datastore/master/river_data.csv")
   ...:

In [4]: import bokeh.charts

In [5]: tooltips=[
   ...:     ('Water Site ', '$x'),
   ...:     ('Average of Enterococcus Count ', '$y')
   ...: ]
   ...: p = bokeh.charts.Scatter(data, x='Site', y='EnteroCount',
   ...:         title="Swimming Holes By Average Enterococcus Count", ylabel="Enterococcus Count", tooltips=tooltips)
   ...: p.width=1000
   ...:

In [6]: p.yaxis.axis_label_text_font_size = "4pt"

In [7]: bokeh.charts.output_file("/tmp/chart.html")

In [8]: bokeh.charts.show(p)

这是结果,带有微小的y轴标签:

enter image description here

如果由于某种原因无法更新到版本0.12,您可以执行以下操作:

In [12]: from bokeh.models import Axis

In [13]: p.select(type=Axis)
Out[13]:
[LinearAxis(id='54b21a9f-22e0-4f7a-b809-8d4f755a444e', ...),
 CategoricalAxis(id='b52e7b2c-2b18-4578-be42-4fbfba17af60', ...)]

获取所有轴对象,您可以通过设置其axis_label_text_font_size属性直接修改这些对象。但是你必须弄清楚哪个轴是x,哪个是y。