首页 文章

在matplotlib中设置y轴限制

提问于
浏览
262

我需要帮助在matplotlib上设置y轴的限制 . 这是我尝试过的代码,但没有成功 .

import matplotlib.pyplot as plt

plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C', 
     marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))

根据我对该图的数据,我得到20和200的y轴限制 . 但是,我想要限制20和250 .

7 回答

  • 0

    这应该工作 . 你的代码适合我,比如Tamás和Manoj Govindan . 看起来您可以尝试更新Matplotlib . 如果您无法更新Matplotlib(例如,如果您没有足够的管理权限),可能使用带有 matplotlib.use() 的不同后端可能有所帮助 .

  • 404

    您可以做的一件事是使用matplotlib.pyplot.axis自行设置轴范围 .

    matplotlib.pyplot.axis

    from matplotlib import pyplot as plt
    plt.axis([0, 10, 0, 20])
    

    0,10表示x轴范围 . 0,20表示y轴范围 .

    或者您也可以使用matplotlib.pyplot.xlim或matplotlib.pyplot.ylim

    matplotlib.pyplot.ylim

    plt.ylim(-2, 2)
    plt.xlim(0,10)
    
  • 7

    要添加@Hima的答案,如果要修改当前的x或y限制,可以使用以下内容 .

    import numpy as np # you probably alredy do this so no extra overhead
    fig, axes = plt.subplot()
    axes.plot(data[:,0], data[:,1])
    xlim = axes.get_xlim()
    # example of how to zoomout by a factor of 0.1
    factor = 0.1 
    new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
    axes.set_xlim(new_xlim)
    

    当我想从默认的绘图设置中缩小或放大一点时,我发现这特别有用 .

  • 6

    如果轴(由问题中显示的代码下方的代码生成)是第一轴的范围,请确保将范围 after 设置为该轴的最后一个绘图 .

  • 97

    试试这个 . 适用于次要情节 .

    axes = plt.gca()
    axes.set_xlim([xmin,xmax])
    axes.set_ylim([ymin,ymax])
    
  • 2

    您的代码也适用于我 . 但是,另一种解决方法是获取绘图的轴,然后仅更改y值:

    x1,x2,y1,y2 = plt.axis() plt.axis((x1,x2,25,250))

  • 14

    这至少在matplotlib版本2.2.2中起作用:

    plt.axis([None, None, 0, 100])
    

    可能这只是设置例如xmin和ymax的好方法,等等 .

相关问题