将ylim设置为多个ytics以获取部分数据

时间:2016-09-21 11:45:55

标签: python matplotlib

我使用matplotlib绘制概率分布,看起来像是Pareto分布和具有正均值的高斯的总和。换句话说,它具有接近0的非常大的值,x = a处的小局部最小值,x = b处的局部最大值。 a,一个长的右尾衰减到0。 我希望仅基于局部最小值右侧的那些值来设置y限制,即,切掉最左边的值以便关注局部最大值。我知道我可以这样做:

plt.plot(pdf)
plt.ylim((0, local_maximum))

但是,这会将ymax设置为局部最大值的值,这使得绘图看起来很难看,原因有二:

  1. 局部最大值接触绘图的上边界,上面没有空格
  2. y轴不是ytics的倍数,因此不清楚最大值是什么
  3. 用于选择默认轴的Matplotlib算法相当不错,所以我目前的黑客是绘制两次:第一次我只绘制高于局部最小值的数据,以便选择一个好的ylim,并且第二次我绘制所有数据,如下:

    fig, ax = plt.subplots()
    # first plot the data above the local minimum x=a, just to get a good ymax
    plt.plot(pdf[a:])
    ymin, ymax = plt.ylim()
    # now plot all the data using the nice ymax
    fig.clear()
    plt.ylim((0, ymax))
    plt.plot(pdf)
    

    这给了我一个很好的ymax,它是ytics的圆整倍数,适合数据到本地最大值,有一些空白。

    有没有更好的方法,不需要两次绘图?

0 个答案:

没有答案