Matplotlib子图出现重复刻度问题求助
解决Matplotlib子图重复刻度问题
你的代码出现重复刻度的核心原因是重复创建了子图:
fig2,ax2 = plt.subplots(figsize=(5,4))这行代码已经自动创建了一个1×1的子图,并返回对应的坐标轴对象ax2。- 后续又执行
ax2 = fig2.add_subplot(111),相当于在同一个画布上再次创建了一个位置完全重叠的子图,两个子图的坐标轴刻度叠加显示,就出现了重复标记的问题。
修改后的代码
只需删除重复创建子图的那一行,直接使用plt.subplots()返回的坐标轴对象即可:
fig2, ax2 = plt.subplots(figsize=(5,4)) fig2.subplots_adjust(left=0.07,right=1,top=1,bottom=0.07) canvas2 = FigureCanvasTkAgg(fig2, master=FrameDVH) canvas2.get_tk_widget().place(x=0,y=0) color=['green','red','blue','black','yellow','orange'] try: for d in range(0,len(DVH_TPS[:,0,0])-1): ax2.plot(DVH_TPS[d,:,0],DVH_TPS[d,:,1],'-o', markersize=1,color=color[d]) except Exception: pass ax2.set_yticks([10,20,30,40,50,60,70,80,90,100]) ax2.set_xticks([dosis*0.2,dosis*0.4,dosis*0.8,dosis,dosis*1.2]) canvas2.draw()
补充说明
如果后续需要添加多个子图,建议通过plt.subplots(nrows, ncols)直接指定行列数批量获取坐标轴对象,或者使用fig.add_subplot()时指定不同的位置参数(如211、212),避免在同一位置重复创建子图。
内容的提问来源于stack exchange,提问作者Albert
相关产品推荐
相关产品推荐

