首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Numpy 2D绘图集自动标度的y-tics总数

Python Numpy 2D绘图集自动标度的y-tics总数
EN

Stack Overflow用户
提问于 2015-08-16 19:22:31
回答 1查看 125关注 0票数 2

我想在二维图中限制y轴上的抽动的总数。在提供的示例图像中,您可以看到F_X图有6个总抽提点(0,0.2,0.4,0.6,0.8,1),而F_Y图有8。是否有一种方法可以自动地拥有轴标度,但确定全部抽动的数量,因为在我的例子中,大于6tics的图看起来太忙了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-16 19:50:03

ax.locator_params(axis='y', nbins=num)是最容易做到这一点的方法。

nbins将设置每个轴的最大回收箱数(即滴答之间的空格)。“偶数”仍将被选中,但这个值控制着轴上滴答的密度。一个新的轴的默认值是9(换句话说,最多10个滴答/滴答标签)。

例如,让我们设置一些默认情况下看起来相当繁忙的东西:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(1977)

# Generate some data with different ranges
x = np.linspace(0, 8.8, 1000)
ydata = np.random.normal(0, 1, (4, x.size)).cumsum(axis=1)
ydata *= np.array([1e-3, 1e3, 10, 1e-2])[:,None]

fig, axes = plt.subplots(nrows=4)
for y, ax in zip(ydata, axes):
    ax.plot(x, y, color='salmon')
plt.show()

喂!!不怎么好!让我们看看能否做得更好:

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=4)
for y, ax in zip(ydata, axes):
    ax.plot(x, y, color='salmon')
    ax.locator_params(axis='y', nbins=5)
plt.show()

到了那里,但还是有点忙。我们可以进一步降低nbins,但我们很快就会没有滴答声。相反,我喜欢使用的一个技巧是“修剪”轴上的第一个和最后一个滴答。这也可以由locator_params控制。

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=4)
for y, ax in zip(ydata, axes):
    ax.plot(x, y, color='salmon')
    ax.locator_params(axis='y', nbins=5, prune='both')
plt.show()

这种“剪枝”如果与共享的x轴相结合,在你正在制作的地块类型的情况下会更加有效。这篇文章的主要效果是关闭一些x-滴答标签。然而,这也将连接所有轴的交互缩放和摇摄,从而共享x范围:

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=4, sharex=True)
for y, ax in zip(ydata, axes):
    ax.plot(x, y, color='salmon')
    ax.locator_params(axis='y', nbins=5, prune='both')
plt.show()

现在我们可以把东西移近一点:

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=4, sharex=True)
for y, ax in zip(ydata, axes):
    ax.plot(x, y, color='salmon')
    ax.locator_params(axis='y', nbins=5, prune='both')

fig.subplots_adjust(hspace=0)
plt.show()

最后,在这种特殊情况下,您还可以考虑使用ax.margins(...)在y方向添加一些填充,并在x方向强制“紧密”缩放数据范围。

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=4, sharex=True)
for y, ax in zip(ydata, axes):
    ax.plot(x, y, color='salmon')
    ax.margins(x=0, y=0.05)
    ax.locator_params(axis='y', nbins=5, prune='both')

fig.subplots_adjust(hspace=0)
plt.show()

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

https://stackoverflow.com/questions/32039004

复制
相关文章

相似问题

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