0

我必须用很长的 x 轴绘制表格。由于当绘图大于图形大小时 Matplotlib 冻结,我发现处理此问题的最佳方法是实现Slider,但问题是 - 它不起作用。我的意思是它可见但无响应。如何处理?此功能的完整实现也将非常感激。

def mono_lut(photo_path):
    #extracting nessesery values
    pixel_values_dict = capture_pixel_values_mono(photo_path)

    # Converting to string arrays
    pixel_number = list(pixel_values_dict.keys())
    col_labels = [str(pixel) for pixel in pixel_number]
    pixel_value = list(pixel_values_dict.values())
    cell_text = [str(pixel) for pixel in pixel_value]

    # Actual plot
    fig, ax = plt.subplots(1, 1)
    ax.axis('tight')
    ax.axis('off')
    ax.table(cellText=[cell_text], colLabels=col_labels, loc='center')
    axSlider = plt.axes([0.1, 0.2, 0.8, 0.05])
    slider = Slider(axSlider, 'Slider', valmin=0, valmax=100)

    plt.show()

编辑。我发现当它不在函数内部时一切正常 - 如何解决这个问题?我也写了这个

def some_function():
    # Something before
    fig, ax = plt.subplots()
    ax.axis('tight')
    ax.axis('off')
    table = ax.table(cellText=[cell_text], colLabels=col_labels, loc='center')
    axSlider = plt.axes([0.1, 0.2, 0.8, 0.05])
    slider = Slider(axSlider, 'Slider', valmin=30, valmax=255, valinit=30, valstep=30)


    def val_update(val):
        right_edge = slider.val
        left_edge = right_edge - 30
        table.cellText = [cell_text[left_edge:right_edge+1]]
        table.colLabels = col_labels[left_edge:right_edge]
        plt.draw()

问题是tableinval_update是不可见的,但即使是这样,我也无法修改它的参数。

4

0 回答 0