首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中使用matplotlib设置刻度位置时出错

在python中使用matplotlib设置刻度位置时出错
EN

Stack Overflow用户
提问于 2011-12-18 05:59:29
回答 1查看 2.7K关注 0票数 2

我正在尝试在matplotlib中设置刻度标记位置。运行以下最小示例时出现错误:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MultipleLocator

x = 10.*np.random.randn(1000)
y = 10.*np.random.randn(1000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x, y)
ax.xaxis.set_major_formatter(MultipleLocator(1.))
ax.yaxis.set_major_formatter(MultipleLocator(1.))
plt.show()

错误存在于设置x轴和y轴刻度线的两条线上。如果我改用NullFormatter(),或者完全省略这些行,代码将运行得很好,并生成预期的图。但是,上面的代码返回以下错误:

代码语言:javascript
运行
复制
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
    return self.func(*args)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 245, in resize
    self.show()
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 248, in draw
    FigureCanvasAgg.draw(self)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 394, in draw
    self.figure.draw(self.renderer)
  File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 798, in draw
    func(*args)
  File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1946, in draw
    a.draw(renderer)
  File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 971, in draw
    tick_tups = [ t for t in self.iter_ticks()]
  File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 906, in iter_ticks
    self.major.formatter.set_locs(majorLocs)
AttributeError: MultipleLocator instance has no attribute 'set_locs'

我试过用谷歌搜索这个错误,但我找不到其他有类似问题的人。关于为什么使用定位器会产生错误,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-18 06:15:51

MultipleLocator是定位器,而不是格式器。您想要使用

代码语言:javascript
运行
复制
ax.xaxis.set_major_locator(MultipleLocator(1.))
ax.yaxis.set_major_locator(MultipleLocator(1.))

这对我来说很有效(使用1看起来不是很漂亮,但它很有效)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8548199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档