tkinter-matplotlib

绘图

def onSpanSelect(self, x0, x1):
"""
记住当前 span 的数值,当新的 span 绘制完毕后,
根据记录信息,主动绘制之前的 span
:param x0:
:param x1:
:return:
"""
print("onSpanSelect enter... x0={},x1={}".format(x0, x1))
self.x1 = x0
self.x2 = x1
ylim = plt.gca().get_ylim()
self.y2 = ylim[1]
self.y1 = ylim[0]

def draw(self):
df = load_data_txt('4444_height.csv')
# 设置坐标轴范围
plt.xlim((13000, 35000)) # 也可写成plt.xlim(-5, 5)
plt.ylim((-2000, 4500)) # 也可写成plt.ylim(-2, 2)

self.fig = plt.figure(num=1)
self.ax = self.fig.add_subplot(111)
# self.ax.autoscale(enable=True , tight=False)

self.ax.plot(df['width'], df['height'], marker='o', mec='b', mfc='w')
self.ax.set_aspect(1)
self.ax.grid(True, linestyle='-.')

# ax.legend(p1, 'orig')

self.canvas = FigureCanvasTkAgg(self.fig, self)

toolbar = NavigationToolbar2Tk(self.canvas, self)
toolbar.update()
self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.X, expand=True)

self.canvas.draw()
self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)

##关联鼠标点击事件
# self.fig.canvas.mpl_connect('button_press_event', self.on_ml_click)
# self.fig.canvas.mpl_connect('button_release_event', self.on_mouse_release)
# self.fig.canvas.mpl_connect('motion_notify_event', self.on_mouse_motion)

self.on_draw_points()

self.span = SpanSelector(self.ax, self.onSpanSelect, 'horizontal', useblit=True)
self.canvas.mpl_connect('key_press_event', self.span)

self.fig.canvas.draw()

中文内容

# 显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 显示负号
plt.rcParams['axes.unicode_minus'] = False
# 有中文使用 u'中文内容'
# 隐藏工具栏
plt.rcParams['toolbar'] = 'None'