如何在散景中创建多线图标题?

时间:2016-09-23 17:47:48

标签: python bokeh

如何在散景中创建多线图标题?...与https://github.com/bokeh/bokeh/issues/994相同的问题 这解决了吗?

import bokeh.plotting as plt

plt.output_file("test.html")
plt.text(x=[1,2,3], y = [0,0,0], text=['hello\nworld!', 'hello\nworld!', 'hello\nworld!'], angle = 0)
plt.show()

此外,标题文字字符串可以接受富文本吗?

2 个答案:

答案 0 :(得分:1)

在最新版本的Bokeh中,标签和文本字形可以接受文本中的换行符,并且这些换行符将按预期呈现。对于多行标题,您必须为所需的每行添加显式Title注释。这是一个完整的例子:

from bokeh.io import output_file, show
from bokeh.models import Title
from bokeh.plotting import figure

output_file("test.html")

p = figure(x_range=(0, 5))
p.text(x=[1,2,3], y = [0,0,0], text=['hello\nworld!', 'hello\nworld!', 'hello\nworld!'], angle = 0)

p.add_layout(Title(text="Sub-Title", text_font_style="italic"), 'above')
p.add_layout(Title(text="Title", text_font_size="16pt"), 'above')

show(p)

产生:

enter image description here

请注意,您仅限于Bokeh公开的标准“文本属性”,因为基础HTML Canvas不接受富文本。如果您需要类似的东西,可以使用custom extension

答案 1 :(得分:0)

您可以使用以下方法为情节添加简单的标题:

from bokeh.plotting import figure, show, output_file

output_file("test.html")
p = figure(title="Your title")
p.text(x=[1,2,3], y = [0,0,0], text=['hello\nworld!', 'hello\nworld!', 'hello\nworld!'], angle = 0)
show(p)

enter image description here

<强>附录

以下是绘制pandas数据帧的工作示例,供您复制/粘贴到jupyter笔记本中。它不优雅也不是pythonic。很久以前我从各种SO帖子中得到了它。对不起,我不记得哪些了,所以我不能引用它们。

<强>代码

# coding: utf-8
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
import pandas as pd
import numpy as np


# Create some data
np_arr = np.array([[1,1,1], [2,2,2], [3,3,3], [4,4,4]])
pd_df = pd.DataFrame(data=np_arr)
pd_df

# Convert for multi-line plotting
data = [row[1].as_matrix() for row in pd_df.iterrows()]
num_lines = len(pd_df)
cols = [pd_df.columns.values] * num_lines
data

# Init bokeh output for jupyter notebook - Adjust this to your needs
output_notebook()

# Plot
p = figure(plot_width=600, plot_height=300)
p.multi_line(xs=cols, ys=data)
show(p)

<强>剧情

enter image description here