浏览代码

fix: charts encoding (#2848)

tags/0.5.10
Yeuoly 1年前
父节点
当前提交
cef16862da
没有帐户链接到提交者的电子邮件
共有 1 个文件被更改,包括 33 次插入0 次删除
  1. 33
    0
      api/core/tools/provider/builtin/chart/chart.py

+ 33
- 0
api/core/tools/provider/builtin/chart/chart.py 查看文件

import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from fontTools.ttLib import TTFont
from matplotlib.font_manager import findSystemFonts


from core.tools.errors import ToolProviderCredentialValidationError from core.tools.errors import ToolProviderCredentialValidationError
from core.tools.provider.builtin.chart.tools.line import LinearChartTool from core.tools.provider.builtin.chart.tools.line import LinearChartTool


# use a business theme # use a business theme
plt.style.use('seaborn-v0_8-darkgrid') plt.style.use('seaborn-v0_8-darkgrid')
plt.rcParams['axes.unicode_minus'] = False

def init_fonts():
fonts = findSystemFonts()

popular_unicode_fonts = [
'Arial Unicode MS', 'DejaVu Sans', 'DejaVu Sans Mono', 'DejaVu Serif', 'FreeMono', 'FreeSans', 'FreeSerif',
'Liberation Mono', 'Liberation Sans', 'Liberation Serif', 'Noto Mono', 'Noto Sans', 'Noto Serif', 'Open Sans',
'Roboto', 'Source Code Pro', 'Source Sans Pro', 'Source Serif Pro', 'Ubuntu', 'Ubuntu Mono'
]

supported_fonts = []

for font_path in fonts:
try:
font = TTFont(font_path)
# get family name
family_name = font['name'].getName(1, 3, 1).toUnicode()
if family_name in popular_unicode_fonts:
supported_fonts.append(family_name)
except:
pass

plt.rcParams['font.family'] = 'sans-serif'
# sort by order of popular_unicode_fonts
for font in popular_unicode_fonts:
if font in supported_fonts:
plt.rcParams['font.sans-serif'] = font
break
init_fonts()


class ChartProvider(BuiltinToolProviderController): class ChartProvider(BuiltinToolProviderController):
def _validate_credentials(self, credentials: dict) -> None: def _validate_credentials(self, credentials: dict) -> None:

正在加载...
取消
保存