除了之前的回答,如果有人想要自动化操作,我编写了一个函数来简化这个过程。
这是它:
def split_title_line(title_text, split_on='(', max_words=5):
"""
A function that splits any string based on specific character
(returning it with the string), with maximum number of words on it
"""
split_at = title_text.find (split_on)
ti = title_text
if split_at > 1:
ti = ti.split (split_on)
for i, tx in enumerate (ti[1:]):
ti[i + 1] = split_on + tx
if type (ti) == type ('text'):
ti = [ti]
for j, td in enumerate (ti):
if td.find (split_on) > 0:
pass
else:
tw = td.split ()
t2 = []
for i in range (0, len (tw), max_words):
t2.append (' '.join (tw[i:max_words + i]))
ti[j] = t2
ti = [item for sublist in ti for item in sublist]
ret_tex = []
for j in range (len (ti)):
for i in range(0, len(ti)-1, 2):
if len (ti[i].split()) + len (ti[i+1].split ()) <= max_words:
mrg = " ".join ([ti[i], ti[i+1]])
ti = [mrg] + ti[2:]
break
if len (ti[-2].split ()) + len (ti[-1].split ()) <= max_words:
mrg = " ".join ([ti[-2], ti[-1]])
ti = ti[:-2] + [mrg]
return '\n'.join (ti)
示例:
输入:split_title_line('小学毕业率(女孩占比)')
输出:
Primary school completion
(% of girls)
输入: split_title_line ('全国小学女生完成率')
输出:
Primary school completion in the
country as % of girls
针对您关于在matplotlib中分割标题的问题,您可以添加以下代码:ax.set_title(split_title_line(r'Normalized occupied Neighbors', max_words=2))
希望每个人都从中受益。