我必须用很长的 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()
问题是table
inval_update
是不可见的,但即使是这样,我也无法修改它的参数。