【问题标题】:How to pass Unicode title to matplotlib?如何将 Unicode 标题传递给 matplotlib?
【发布时间】:2013-07-08 11:50:48
【问题描述】:

无法在 matplotlib 中获得正确的标题: 'technologieën in °C' 给:technologieÃn in ÃC

已经尝试过的可能解决方案:

  • u'technologieën in °C' 不起作用
  • 也不行:# -*- coding: utf-8 -*- 在代码文件的开头。

有什么解决办法吗?

【问题讨论】:

  • 对我来说很好:ideone.com/nhrP0m
  • @AshwiniChaudhary:那是因为您很幸运并为 IDEOne.com 输出编码粘贴了正确的编码。或者你的终端编码。但是终端或 IDEOne.com 页面编码与 matplotlib 生成的输出不同。

标签: python matplotlib unicode python-2.x


【解决方案1】:

你需要传入unicode文本:

u'technologieën in °C'

请确保您使用顶部的 # -*- coding: utf-8 -*- 注释,并确保您的文本编辑器实际使用该编解码器。如果您的编辑器将文件保存为 Latin-1 编码文本,请在标头中使用该编解码器等。注释向 Python 传达如何解释您的源文件,尤其是在解析字符串文字时。

或者,对 Unicode 文字中的任何非 ASCII 代码使用转义码:

u'technologie\u00ebn in \u00b0C'

并避免首先使用什么编解码器的问题。

我敦促您阅读:

在您继续之前。

大多数字体将支持°,但如果您看到显示的是一个框,那么您遇到了字体问题,需要切换到支持您尝试显示的字符的字体。例如,如果 Ariel 支持您所需的字符,则使用:

matplotlib.rc('font', family='Arial')

在绘图之前。

【讨论】:

  • 唯一可行的解​​决方案是:u'technologie\u00ebn in \u00b0C'。 # -- coding: utf-8 -- 与 u'technologieën in °C' 结合不起作用。
  • 那么您的文本编辑器使用的编码与您在顶部注释中指定的编解码器匹配。例如,如果您的编辑器使用当前的 Windows 代码页,请将其更改为 cp1252(Windows Latin 1 变体)而不是 UTF8。鉴于您的文字是荷兰语(喂!),这将是我的第一个猜测。
  • # -- 编码:cp1252 -- 
    不起作用。我与 Spyder 合作。
  • 我不知道 Spyder 在保存文件时使用什么编码,抱歉。
  • 感谢您的帮助。 Python 和 unicode 真的很痛苦。不明白。 .NET 没有那种麻烦......
【解决方案2】:

在 Python3 中,无需担心所有麻烦的 UTF-8 问题。

请注意,您需要在绘图前设置 Unicode 字体。

matplotlib.rc('font', family='Arial')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2022-12-09
    • 1970-01-01
    • 2012-12-09
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多