Tôi đang vẽ biểu đồ dữ liệu trong một ô sử dụng wxPython nơi giới hạn dữ liệu trên trục y đang thay đổi với dữ liệu. Tôi muốn thay đổi trục động mà không vẽ lại toàn bộ khung hình như canvas.draw()
thay vì tôi muốn sử dụng blitting
cho điều này như tôi làm cho cốt truyện.âm mưu hoạt hình matplotlib sẽ không cập nhật nhãn trên trục bằng cách sử dụng blit
Những gì tôi đã làm việc là thay đổi trục y, và tôi nhận được yticks hoạt hình với cốt truyện, tiếc là các ylabels đã biến mất và tôi không thể tìm thấy giải pháp. Lý do là đặt cài đặt get_yaxis().set_animated(True)
cho trục.
Tôi đã đưa ra một ví dụ làm việc nhỏ sau đây. Tôi thiếu gì ở đây?
import matplotlib
matplotlib.use('WXAgg')
import wx
import pylab as p
import numpy as npy
from time import sleep
ax = p.subplot(111)
canvas = ax.figure.canvas
x = npy.arange(0,2*npy.pi,0.01)
line, = p.plot(x, npy.sin(x), animated=True)
ax.get_yaxis().set_animated(True)
def update_line(*args):
if update_line.background is None:
update_line.background = canvas.copy_from_bbox(ax.bbox)
for i in range(20):
canvas.restore_region(update_line.background)
line.set_ydata((i/10.0)*npy.sin(x))
ax.set_ylim(-1*i/5.0-0.5,i/5.0+0.5)
ax.draw_artist(ax.get_yaxis())
ax.draw_artist(line)
canvas.blit(ax.bbox)
sleep(0.1)
print 'end'
update_line.cnt = 0
update_line.background = None
wx.EVT_IDLE(wx.GetApp(), update_line)
p.show()
Về cơ bản tôi đang tìm kiếm thứ gì đó như get_ylabels().set_animated(True)
nhưng tôi không thể tìm thấy.
Cảm ơn bạn đã trả lời câu hỏi này, thực sự điều này đã hiệu quả với tôi, điều đó thật tuyệt vời! – Merlin
Điều này rất hữu ích! Cảm ơn bạn đã gửi câu trả lời này. Hoạt hình yaxis và tick-label đột nhiên trở nên rõ ràng. – achennu
Tôi biết đây là một chủ đề cũ, nhưng 'ax.clipbox' mang lại cho tôi Không có gì để điều này không thành công. Bất kỳ ý tưởng? –