plt.rcParams['font.family'] = 'Microsoft YaHei'
fig, axes = plt.subplots(nrows=1,ncols=1,sharey=True,figsize=(8,6))
plt.xlabel('ln(C1/C2)',fontsize=10)
plt.ylabel('ln(C2/C3)',fontsize=10)
plt.axis([0,10,0,10])
biaozhuxinxi_num = []
for i in range(len(lnC1C2_x_num)):
biaozhuxinxi_new = 'ln(C1/C2)= ' + str(lnC1C2_x_num[i]) + '\n' + 'ln(C2/C3)= ' + str(lnC2C3_y_num[i]) + '\n' + '井深= ' + str(deep_z_num[i])
biaozhuxinxi_num.append(biaozhuxinxi_new)
zuobiaobiaozhu_annotation=[]
for i in range(len(lnC1C2_x_num)):
# 标注点的坐标
point_x = lnC1C2_x_num[i]
point_y = lnC2C3_y_num[i]
point= plt.scatter(lnC1C2_x_num[i],lnC2C3_y_num[i],c=deep_z_num[i],cmap=plt.cm.cool,s=1)
# 标注框偏移量
offset1 = 40
offset2 = 40
# 标注框
bbox1 = dict(boxstyle="round", fc='lightgreen', alpha=0.6)
# 标注箭头
arrowprops1 = dict(arrowstyle="->", connectionstyle="arc3,rad=0.")
# 标注
annotation = plt.annotate(biaozhuxinxi_num[i], xy=(lnC1C2_x_num[i], lnC2C3_y_num[i]), xytext=(-offset1, offset2), textcoords='offset points',
bbox=bbox1, arrowprops=arrowprops1, size=10)
# 默认鼠标未指向时不显示标注信息
annotation.set_visible(False)
zuobiaobiaozhu_annotation.append([point,annotation])
# 定义鼠标响应函数
def on_move(event):
visibility_changed = False
for point,annotation in zuobiaobiaozhu_annotation:
should_be_visible = (point.contains(event)[0] == True)
if should_be_visible != annotation.get_visible():
visibility_changed = True
annotation.set_visible(should_be_visible)
if visibility_changed:
plt.draw()
# 鼠标移动事件
on_move_id = fig.canvas.mpl_connect('motion_notify_event', on_move)
plt.scatter(lnC1C2_x_num,lnC2C3_y_num,c=deep_z_num,cmap=plt.cm.cool_r,s=1)#cm即colormap,c=y表示颜色随y变化
plt.colorbar()
plt.show()
将这部分功能改用多线程操作,这样不会卡顿了