繁体   English   中英

如何在matplotlib中设置轴的限制?

[英]How do I set limits for axes in matplotlib?

我有这个代码:

ax = fig.add_axes([0.1, 0.1, 0.55, 0.8])

我想在ax的x轴上设置args.avg_window 我已经尝试使用xlim,set_xlim,set_xbound,现在将xrange=(args.avg_window, args.posts_limit)到该函数调用中,但似乎没有任何效果:

ax = fig.add_axes([0.1, 0.1, 0.55, 0.8], xrange=(args.avg_window, args.posts_limit))

我收到此错误:

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/Users/d3admin6/python_phpBB_scraper/analysis/liwc/plot_forum_emos.py", line 334, in <module>
    .format(args.xattr, args.yattr, window_str))
  File "/Users/d3admin6/python_phpBB_scraper/analysis/liwc/plot_forum_emos.py", line 247, in plot_emos_line
    ax = fig.add_axes([0.1, 0.1, 0.55, 0.8], xrange=(args.avg_window, args.posts_limit))
  File "/Library/Python/2.7/site-packages/matplotlib/figure.py", line 806, in add_axes
    a = projection_class(self, rect, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib/axes.py", line 499, in __init__
    martist.setp(self, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib/artist.py", line 1229, in setp
    func = getattr(o, funcName)
AttributeError: 'Axes' object has no attribute 'set_xrange'

ax.set_xlim(left = args.avg_window)

我收到此错误:

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/Users/d3admin6/python_phpBB_scraper/analysis/liwc/plot_forum_emos.py", line 335, in <module>
    .format(args.xattr, args.yattr, window_str))
  File "/Users/d3admin6/python_phpBB_scraper/analysis/liwc/plot_forum_emos.py", line 256, in plot_emos_line
    ax.set_xbound(lower=args.avg_window)
  File "/Library/Python/2.7/site-packages/matplotlib/axes.py", line 2477, in set_xbound
    self.set_xlim(upper, lower, auto=None)
  File "/Library/Python/2.7/site-packages/matplotlib/axes.py", line 2553, in set_xlim
    left, right = mtransforms.nonsingular(left, right, increasing=False)
  File "/Library/Python/2.7/site-packages/matplotlib/transforms.py", line 2567, in nonsingular
    if (not np.isfinite(vmin)) or (not np.isfinite(vmax)):
NotImplementedError: Not implemented for this type

我做错了什么,我该怎么做才能设置轴的界限?

在第一次调用时,它是一个错误的关键字参数:要设置x轴限制,您应该将xlim传递给add_axes

ax = fig.add_axes([0.1, 0.1, 0.55, 0.8], xlim=(args.avg_window, args.posts_limit))

之后使用设置轴限制

ax.set_xlim(left=args.avg_window)

适合我。 可能在您之前的代码中出现了问题,或者您的matplotlib版本中没有实现。 我使用1.2版。

您的args.avg_window存储为用户输入返回的字符串。 你需要将它作为matplotib轴限制参数传递给int() ,无论你想做什么。

set_xlim(int(args.avg_window), right=1)

将设置最小x轴限制,同时保持最大值不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM