获取可见范围内的数据点数

时间:2017-03-19 14:27:48

标签: python matplotlib

在特定的Matplotlib图中,我希望线型基于屏幕上的点数动态变化(基本上,当数据点上的数字足够低时,从-切换到-o

为此,首先我需要在屏幕上获取数据点的数量。我在下面编写了一个代码示例,使用函数get_view_interval

import matplotlib.pyplot as plt

def get_Npoints_on_screen(ax=None, line_index=0):
    ''' 
    Input
    -----
    ax: matplotlib axe
    l: line number
    '''

    if ax is None:
        ax=plt.gca()
    line = ax.get_lines()[line_index]


    xmin, xmax = ax.xaxis.get_view_interval()
    ymin, ymax = ax.yaxis.get_view_interval()

    xdata = line.get_xdata()
    ydata = line.get_ydata()

    return sum((xdata>=xmin) & (xdata<=xmax) & (ydata>=ymin) & (ydata<=ymax))


# Just a figure to play with
if __name__ == '__main__':
    from numpy import linspace, pi, cos
    x = linspace(0,4*pi,100)

    plt.plot(x,cos(x),'ok')

    print(get_Npoints_on_screen(),'points on screen')

    plt.waitforbuttonpress()
    plt.xlim((0,pi))

    print(get_Npoints_on_screen(),'points on screen')

它有效,但我觉得它不是很优雅。在Matplotlib中有更直接的方法来获取屏幕上的可见点数吗?

0 个答案:

没有答案