【问题标题】:Matplotlib text won't display in xkcd fontMatplotlib 文本不会以 xkcd 字体显示
【发布时间】:2014-10-30 00:36:03
【问题描述】:

将 xkcd() 与 matplotpib 一起使用时,没有任何字体以通常的漫画字体显示。有什么变化还是我做错了什么?

    x = df['Time']
    y = df['Adjustment']

    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)

    ax1 = fig.add_subplot(1,1,1)
    ax1.plot(x,y)

    ax1.xaxis.set_visible(False)
    ax1.yaxis.set_visible(False)

    plt.axvline(x=2.3, color='k', ls='dashed')
    plt.axvline(x=6, color='k', ls='dashed')

    ax.text(4,4,'Culture Shock', size=16)

    plt.title('Test title')

    plt.xkcd()
    plt.show()

感谢您的帮助。

我应该澄清一下,图表将以 xkcd 样式绘制,而不是任何字体。它打印类似于 Times New Roman 的内容。

【问题讨论】:

标签: python matplotlib ipython


【解决方案1】:

作为examples show,您需要将plt.xkcd() 放在代码的开头,在所有绘图命令之前。因此:

from matplotlib import pyplot as plt
import numpy as np

x = np.arange(10)
y = np.sin(x)

plt.xkcd()
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax1 = fig.add_subplot(1,1,1)
ax1.plot(x,y)
ax1.xaxis.set_visible(False)
ax1.yaxis.set_visible(False)
plt.axvline(x=2.3, color='k', ls='dashed')
plt.axvline(x=6, color='k', ls='dashed')
ax.text(4,4,'Culture Shock', size=16)
plt.title('Test title')
plt.show()

这对我来说是这个数字:

如您所见,存在摇摆不定的线条,但字体错误,仅仅是因为它在我的 Linux 机器上不可用(我还在命令行上收到了关于此的警告)。 将 plt.xkcd() 放在代码末尾会得到简单的 matplotlib 图形,没有摇摆不定的线条。

这里是 pyplot.xkcd() 在幕后所做的总结;它只是设置了很多资源参数:

rcParams['font.family'] = ['Humor Sans', 'Comic Sans MS']
rcParams['font.size'] = 14.0
rcParams['path.sketch'] = (scale, length, randomness)
rcParams['path.effects'] = [
    patheffects.withStroke(linewidth=4, foreground="w")]
rcParams['axes.linewidth'] = 1.5
rcParams['lines.linewidth'] = 2.0
rcParams['figure.facecolor'] = 'white'
rcParams['grid.linewidth'] = 0.0
rcParams['axes.unicode_minus'] = False
rcParams['axes.color_cycle'] = ['b', 'r', 'c', 'm']
rcParams['xtick.major.size'] = 8
rcParams['xtick.major.width'] = 3
rcParams['ytick.major.size'] = 8
rcParams['ytick.major.width'] = 3

【讨论】:

  • 我实际上已经尝试过了,但又做了一次尝试。没有成功。我想知道是否为了避免看起来与漫画一模一样而对其进行了更改。
  • @user3741467 如果你得到一个线条不稳定但没有正确字体的图形(就像我在更新的答案中得到的图形),那么很可能你的机器上没有安装字体。跨度>
  • 就是这样。我在一台新机器上,所以我下载了字体并删除了字体缓存。谢谢!
  • 这里是菜鸟。如何下载该字体,如何删除字体缓存?
  • 字体安装后,matplotlib 字体缓存必须被清除: Win7: %userprofile%\.matplotlib\fontList.cache - Ubuntu: ~/.cache/matplotlib - source: stackoverflow.com/a/26106170/5276734
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2014-06-07
  • 2020-09-10
相关资源
最近更新 更多