天道酬勤,学无止境

matplotlib xkcd 在 mac 上不起作用(matplotlib xkcd not working on mac)

问题

我在可视化 matplotlib xkcd 图时遇到了一个小问题。 通过简单地尝试执行在 matplotlib.org 上找到的示例。 当我执行 xkcd.py 时,绘图的可视化不起作用,我收到以下错误消息:

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/figure.py", line 1084, in draw
    func(*args)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/axes/_base.py", line 2092, in draw
    a.draw(renderer)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/lines.py", line 712, in draw
    drawFunc(renderer, gc, tpath, affine.frozen())
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/lines.py", line 1067, in _draw_lines
    self._lineFunc(renderer, gc, path, trans)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/lines.py", line 1107, in _draw_solid
    renderer.draw_path(gc, path, trans)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/patheffects.py", line 115, in draw_path
    rgbFace)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/patheffects.py", line 217, in draw_path
    renderer.draw_path(gc, tpath, affine, rgbFace)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/backends/backend_macosx.py", line 58, in draw_path
    gc.draw_path(path, transform, linewidth, rgbFace)
AttributeError: 'GraphicsContextBase' object has no attribute 'draw_path'
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/figure.py", line 1084, in draw
    func(*args)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/axes/_base.py", line 2092, in draw
    a.draw(renderer)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/axis.py", line 1102, in draw
    tick.draw(renderer)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/axis.py", line 244, in draw
    self.tick1line.draw(renderer)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/lines.py", line 757, in draw
    rgbaFace)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/patheffects.py", line 127, in draw_markers
    **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/backend_bases.py", line 266, in draw_markers
    rgbFace)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/patheffects.py", line 115, in draw_path
    rgbFace)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/patheffects.py", line 217, in draw_path
    renderer.draw_path(gc, tpath, affine, rgbFace)
  File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/backends/backend_macosx.py", line 58, in draw_path
    gc.draw_path(path, transform, linewidth, rgbFace)
AttributeError: 'GraphicsContextBase' object has no attribute 'draw_path'

如果我尝试保存这些图,则会得到两个完美的 png 文件:

我真的不明白为什么!

回答1

正如评论者所说,不支持 macOSX 后端。 使用 OS X 10.10.1 上的 Python 3.4,TkAgg 可以工作。

import matplotlib
matplotlib.use("TkAgg")

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • matplotlib xkcd not working on mac
    I've small problem in visualizing matplotlib xkcd plots. By simply trying to execute the example found on matplotlib.org. When i execute xkcd.py the visualization of the plots does't work and I get this error message: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/artist.py", line 59, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/Library/Python/2.7/site-packages/matplotlib-1.5.x-py2.7-macosx-10.10-intel.egg/matplotlib/figure.py", line 1084, in draw func(*args) File "/Library/Python/2.7/site
  • Matplotlib 找不到字体(Matplotlib can't find font)
    问题 我正在尝试在 Python 3 下使用 matplotlib(1.4.2 版)绘制 xkcd 样式的图。 当我尝试运行时: import matplotlib.pyplot as plt plt.xkcd() plt.plot([1,2,3,4], [1,4,9,16], 'bo') plt.axis([0, 6, 0, 20]) plt.show() 它打开一个没有任何图像的空窗口,我收到错误消息: /usr/lib/python3/dist-packages/matplotlib/font_manager.py:1279: UserWarning: findfont: Font family ['Humor Sans', 'Comic Sans MS', 'StayPuft'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext])) /usr/lib/python3/dist-packages/matplotlib/font_manager.py:1289: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant
  • 如何在 matplotlib 上获取 XKCD 字体(How to get XKCD font on matplotlib)
    问题 我设法在以下位置复制图表: http://matplotlib.org/xkcd/examples/showcase/xkcd.html 但是我的字体看起来不是那样。 如何将文本字体更改为很酷的 xkcd 字体? 回答1 引用>>> help(plot.xkcd)的输出: For best results, the "Humor Sans" font should be installed: it is not included with matplotlib.
  • 使用matplotlib获取xkcd图(Getting xkcd plots using matplotlib)
    问题 当前版本的matplotlib(1.3.1)支持xkcd样式的绘图,但是当我遵循生成此类绘图的基本说明(在iPython 1.1.0中)时, %pylab plt.xkcd() plt.plot(sin(linspace(0, 10))) plt.title('Whoo Hoo!!!') 我懂了 代替 我究竟做错了什么? 回答1 要使其正常工作,您需要 matplotlib 1.3.1(不适用于matplotlib 1.3.0或更早版本) sudo pip install matplotlib --upgrade 字体幽默Sans 从此处或此处下载,安装(在OS X上,将其打开并单击“安装”) 删除matplotlib字体缓存(如DanHickstein在matplotlib / issues / 2269中所建议) rm ~/.matplotlib/fontList.cache 现在,执行代码,它应该可以正常工作。 正如某些人建议的TkAgg ,您无需将后端更改为TkAgg 。 对我来说,它在'module://IPython.kernel.zmq.pylab.backend_inline'上工作得很好(您可以通过plt.get_backend()进行检查)。 (我遇到了同样的问题,并且至少在OS X 10.8.5上使用matplotlib 1.3.1和IPython 2
  • matplotlib xkcd and black figure background
    I am trying to make a plot using matplotlib's xkcd package while having a black background. However, xkcd seems to add a sort of white contour line around text and lines. On a white background you can't see this white frame, but on a black background it is really annoying. Does anyone have an idea how to fix this? Maybe an option how to change the white contour lines to have the background color instead? minimal example: import numpy as np import matplotlib.pyplot as plt plt.style.use(['dark_background']) plt.xkcd() plt.rcParams['figure.facecolor'] = 'black' x = np.linspace(-5, 5) plt.figure()
  • plot() 在 IPython 笔记本上不起作用(plot() doesn't work on IPython notebook)
    问题 我是 python 科学计算的新手,我试图在 IPython notebook 上制作一个简单的图形。 import pandas plot(arange(10)) 然后错误如下所示。 --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-6b139d572bd6> in <module>() 1 import pandas ----> 2 plot(arange(10)) NameError: name 'plot' is not defined 相反,使用 IPython --pylab 模式,当我尝试相同的代码时会弹出一个正确的图表。 我是否缺少任何环境? 我的环境是 Mac OSX 10.8.5、python 2.7.5、IPython 1.1.0、matplotlib 1.3.1 和 pandas 0.12.0。 我从 continuum.io 下载了 Anaconda 安装程序的 python 科学环境。 Anaconda 版本是 2014 年 1 月 30 日的最新版本。 回答1 不建议使用pylab模式。 请参阅以下来自 Matthias
  • Matplotlib can't find font
    I am trying to draw an xkcd-style plot with matplotlib (ver. 1.4.2) under Python 3. When I try to run: import matplotlib.pyplot as plt plt.xkcd() plt.plot([1,2,3,4], [1,4,9,16], 'bo') plt.axis([0, 6, 0, 20]) plt.show() It opens an empty window without any image and I get the error: /usr/lib/python3/dist-packages/matplotlib/font_manager.py:1279: UserWarning: findfont: Font family ['Humor Sans', 'Comic Sans MS', 'StayPuft'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext])) /usr/lib/python3/dist-packages/matplotlib/font_manager.py:1289: UserWarning
  • Matplotlib text won't display in xkcd font
    When using xkcd() with matplotpib, none of the font is displaying in the usual comic font. Did something change or am I doing something wrong? 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() Thanks for any help. I should clarify that the graph will plot in the xkcd style, just not any of the
  • Getting xkcd plots using matplotlib
    The current version of matplotlib (1.3.1) supports xkcd-style plotting, but when I follow the basic instructions for generating such a plot (in iPython 1.1.0), %pylab plt.xkcd() plt.plot(sin(linspace(0, 10))) plt.title('Whoo Hoo!!!') I get instead of What am I doing wrong?
  • 如何更改情节背景颜色?(How to change plot background color?)
    问题 我正在matplotlib中制作散点图,需要将实际图的背景更改为黑色。 我知道如何使用以下方法更改情节的脸色: fig = plt.figure() fig.patch.set_facecolor('xkcd:mint green') 我的问题是,这会改变情节周围空间的颜色。 如何更改绘图的实际背景颜色? 回答1 使用axes对象的set_facecolor(color)方法,您已经通过以下方法之一创建了该方法: 您一起创建了图形和轴fig, ax = plt.subplots(nrows=1, ncols=1) 您创建了一个图形,然后再创建一个轴fig = plt.figure() ax = fig.add_subplot(1, 1, 1) # nrows, ncols, index 您使用了有状态的API(如果您要做的事情不止几行,尤其是如果您有多个绘图,则上述面向对象的方法可以简化工作,因为您可以引用特定的图形,在某些轴上进行绘图并自定义任何一个) plt.plot(...) ax = plt.gca() 然后,您可以使用set_facecolor : ax.set_facecolor('xkcd:salmon') ax.set_facecolor((1.0, 0.47, 0.42)) 作为颜色的复习: matplotlib.colors
  • matplotlib学习心得(绘图常用)
    Figure对象 创建对象最简单的方法pyplot fig=plt.figure() fig.suptitle('a figure') fig,ax=plt.subplots(2,2) Axes对象 坐标轴对象(包含x,y,z轴等),即包含了多个Axis对象 用set_xlim/set_ylim()来设置坐标轴的范围 用set_xlabel()设置坐标轴标签(类似title) 利用axes辅助方法创建原始的Artist对象 ax.annotate()–文字注释 ax.fill()–共享区域 ax.imshow()–图像数据 ax.legend()–图轴例 ax.plot()–xy轴 Axis对象 负责生成刻度线(major tick,minor tick)和刻度线标签(tickLabels) 刻度线位置Locator,标签字符串由Formatter格式化 Artist对象 图上的所有对象基本都属于艺术家对象,艺术家对象有两种类型:基元和容器。基元表示要在画布上画的东西,容器是放置这些基元的位置(Axes,Axis,Figure)。首先创建一个figure对象,然后用figure创建一个或多个axes或subplot实例,这样可以实例化图例,并与用户界面连接起来。例如:1、用pyplot处理绘图fig=plt.figure(),ax=fig.add_subplot(2,1,1)
  • matplotlib中的命名颜色(Named colors in matplotlib)
    问题 matplotlib中有哪些命名颜色可用于绘图中? 我可以在matplotlib文档中找到一个列表,声称这些是唯一的名称: b: blue g: green r: red c: cyan m: magenta y: yellow k: black w: white 但是,我发现至少在这种情况下,也可以使用这些颜色: scatter(X,Y, color='red') scatter(X,Y, color='orange') scatter(X,Y, color='darkgreen') 但这些不在上面的列表中。 有人知道可用的命名颜色的详尽列表吗? 回答1 我经常忘记要使用的颜色的名称,并不断回到这个问题=) 先前的答案很好,但是我发现从发布的图像中获得可用颜色的概述有些困难。 我更喜欢将颜色分组为相似的颜色,因此我略微调整了上面评论中提到的matplotlib答案,以得到按列排序的颜色列表。 该顺序与我按眼睛排序的顺序不同,但我认为它提供了很好的概述。 自从我最初发布此答案以来,我更新了图像和代码以反映已添加了'rebeccapurple',并且三种鼠尾草颜色已移至'xkcd:'前缀下。 与matplotlib示例相比,我的确没有太大变化,但这是完整性的代码。 import matplotlib.pyplot as plt from matplotlib import
  • 在matplotlib中绘制不同的颜色[重复](plotting different colors in matplotlib [duplicate])
    问题 这个问题已经在这里有了答案: 如何在单个图形中为不同的图获得不同的彩色线条? (5个答案) 3年前关闭。 假设我有一个for循环,我想用不同的颜色绘制点: for i in range(5): plt.plot(x,y,col=i) 如何在for循环中自动更改颜色? 回答1 @tcaswell已经回答了,但是我正在输入答案,因此我将继续进行发布... 您可以通过多种不同的方式来执行此操作。 首先, matplotlib将自动在颜色之间循环。 默认情况下,它会循环显示蓝色,绿色,红色,青色,洋红色,黄色和黑色: import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 1, 10) for i in range(1, 6): plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i)) plt.legend(loc='best') plt.show() 如果要控制matplotlib循环通过哪种颜色,请使用ax.set_color_cycle : import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 1, 10) fig, ax = plt
  • 使用request.get()时未提供任何模式以及其他错误(No schema supplied and other errors with using requests.get())
    问题 我通过遵循“自动化无聊的东西”来学习Python。 该程序应该转到http://xkcd.com/并下载所有图像以供离线查看。 我使用的是2.7版和Mac。 由于某种原因,我遇到诸如“未提供模式”之类的错误,以及使用request.get()本身的错误。 这是我的代码: # Saves the XKCD comic page for offline read import requests, os, bs4, shutil url = 'http://xkcd.com/' if os.path.isdir('xkcd') == True: # If xkcd folder already exists shutil.rmtree('xkcd') # delete it else: # otherwise os.makedirs('xkcd') # Creates xkcd foulder. while not url.endswith('#'): # If there are no more posts, it url will endswith #, exist while loop # Download the page print 'Downloading %s page...' % url res = requests.get(url) # Get the page
  • Python数据分析与机器学习实战笔记(4)- Seaborn
    文章目录 Seaborn1. Seaborn 简介2. 整体布局风格设置3. 风格细节设置4. 调色板4.1 调色板4.2 分类色板4.3 圆形画板4.4 调色板颜色设置4.4.1 使用xkcd颜色来命名颜色4.4.2 连续色板4.4.3 cubehelix_palette()调色板4.4.4 light_palette() 和dark_palette()调用定制连续调色板 5. 单变量分析绘图5.1 数据分布情况5.2 根据均值和协方差生成数据5.3 观测两个变量之间的分布关系最好用散点图 6. 回归分析绘图7. 多变量分析绘图7.1 盒图7.2 提琴图7.3 显示值的集中趋势可以用条形图7.4 点图可以更好的描述变化差异7.5 宽形数据7.6 多层面板分类图7.7 Facetgrid使用方法7.8 热度值绘图 heatmap Seaborn 1. Seaborn 简介 import seaborn as sns import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline 2. 整体布局风格设置 def sinplot(flip=1): x = np.linspace(0, 14, 100) for i in range(1, 7): plt.plot
  • matplotlib: Humor Sans does not displayed correctly accents
    This is what I get from matplotlib if I choose Humor Sans: So "DISTÀNCIA" showed as "DIST?NCIA". It is well-displayed with other font. The code is here: # -*- coding: utf-8 -*- from matplotlib import pyplot as plt import numpy as np from pylab import * # Estil de còmic XKCD plt.xkcd() # Etiquetes fig = plt.figure() plt.title("Distància vs velocitat de les carreres d'atletisme") plt.xlabel('distància') plt.ylabel('velocitat de l\'atleta (homes)') # Configuracions ax = fig.add_subplot(1, 1, 1) ax.set_xlim([-10, 12000]) ax.set_ylim([-1, 11]) ax.spines['right'].set_color('none') ax.spines['top']
  • No schema supplied and other errors with using requests.get()
    I'm learning Python by following Automate the Boring Stuff. This program is supposed to go to http://xkcd.com/ and download all the images for offline viewing. I'm on version 2.7 and Mac. For some reason, I'm getting errors like "No schema supplied" and errors with using request.get() itself. Here is my code: # Saves the XKCD comic page for offline read import requests, os, bs4, shutil url = 'http://xkcd.com/' if os.path.isdir('xkcd') == True: # If xkcd folder already exists shutil.rmtree('xkcd') # delete it else: # otherwise os.makedirs('xkcd') # Creates xkcd foulder. while not url.endswith('
  • 用 Pandas 上的值注释条形图(在 Seaborn factorplot 条形图上)(Annotate bars with values on Pandas (on Seaborn factorplot bar plot))
    问题 我写了一些代码来尝试解决这个问题:https://stackoverflow.com/questions/39477748/how-to-annotate-bars-with-values-on-pandas-on-seaborn-factorplot-bar-plot 我使用了可以在这里找到的部分代码:matplotlib 高级条形图 为什么图这么小? 代码只是告诉从 Pandas dataframe 中获取准确度。 编码: sns.set(style="white") g = sns.factorplot(x="Stages", y="Accuracy", hue="Dataset", data=df, saturation = 5, size=4, aspect=2, kind="bar", palette= myPalette, legend=False) ax=g.ax def annotateBars(row, ax=ax): if row['Accuracy'] < 20: color = 'white' vertalign = 'bottom' vertpad = 2 else: color = 'black' vertalign = 'top' vertpad = -2 ax.text(row.name, row['Accuracy'] + vertpad
  • matplotlib.pyplot的全函数解释 API
    matplotlib.pyplot Pyplot功能概述 https://matplotlib.org/stable/api/pyplot_summary.html pyplot matplotlib.pyplot 是matplotlib的基于状态的接口。 matplotlib.pyplot.plotting()[资源] 功能 描述 acorr 绘制x的自相关。 angle_spectrum 绘制角度光谱。 annotate 用文本text注释点xy。 arrow 在轴上添加一个箭头。 autoscale 将轴视图自动缩放为数据(切换)。 axes 在当前图形上添加轴,使其成为当前轴。 axhline 在轴上添加一条水平线。 axhspan 在轴上添加水平跨度(矩形)。 axis 获取或设置某些轴属性的便捷方法。 axline 添加无限长的直线。 axvline 在轴上添加一条垂直线。 axvspan 在轴上添加垂直跨度(矩形)。 bar 绘制条形图。 bar_label 标记条形图。 barbs 绘制一个2D倒刺区域。 barh 绘制水平条形图。 box 打开或关闭当前轴上的轴框。 boxplot 制作一个盒子和晶须图。 broken_barh 绘制矩形的水平序列。 cla 清除当前轴。 clabel 标注等高线图。 clf 清除当前数字。 clim 设置当前图像的颜色限制。
  • Matplotlib在Mac OSX 10.8 Mountain Lion上安装失败(Matplotlib install failure on Mac OSX 10.8 Mountain Lion)
    问题 我尝试在MacBook Air上安装matplotlib,但始终会显示以下错误消息: Processing matplotlib-1.1.1_notests.tar.gz Running matplotlib-1.1.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-3jFpXK/matplotlib-1.1.1/egg-dist-tmp-jC7QY3 basedirlist is: [] ============================================================================ BUILDING MATPLOTLIB matplotlib: 1.1.1 python: 2.7.2 (default, Jun 20 2012, 16:23:33) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] platform: darwin REQUIRED DEPENDENCIES numpy: 1.6.1 freetype2: found, but unknown version (no pkg-config) * WARNING: Could not find 'freetype2'