matplotlib 放到 Gui中 和 坐标轴的调整

matplotlib 放到 Gui中:

技术比较一般 代码比较简单 主要作为个人模块记录


操作

  • 首先需要import两个重要的包

FigureCanvasQTAgg:
就是一个渲染器,渲染器的工作就是drawing,执行绘图的这个动作。渲染器是使物体显示在屏幕上

NavigationToolbar2QT(plot工具包)

from matplotlib.backends.backend_qt5agg import (FigureCanvasQTAgg ,  NavigationToolbar2QT as NT)
  • 其次要做的是创建一个图像初始化的方法
    def __initFigure(self):
        self.__fig = mpl.Figure(figsize=(14, 11))
        figCanvas = FigureCanvasQTAgg(self.__fig) # 绘图:QT(Figure)
        nt = NT(figCanvas, self)		# 把工具放到新绘制的QT(Figure)中
        self.addToolBar(nt)  		 # 进行添加操作
        self.verticalLayout.addWidget(figCanvas)
        self.ax3d = self.__fig.add_subplot(projection='3d')
        self.ax3d.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})
        self.ax3d.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})
        self.ax3d.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})

后面三行是我的程序中需要的大家不要在意 他的主要用途就是在self.__fig的子图中添加xyz轴 然后给与相应属性
我的目的是将plot嵌入到verticalLayout中去 所以有这么一段self.verticalLayout.addWidget(figCanvas)

  • 最后就在主函数中引用方法就可以了

self.__initFigure()在这里插入图片描述


坐标轴调整:

要对坐标轴进行调整,首先得清楚原理:

在matplotlib的pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。其中,plt.gca()表示Get Current Axes。
(这里原文链接:https://blog.csdn.net/yue_csdn/article/details/110439628)

但是在我的代码中并不需要gca()函数 因为我的self.ax3d 就是三个坐标轴的实例
self.ax3d = self.__fig.add_subplot(projection=‘3d’)

  • 我这里的坐标轴调整主要包括范围增加还有刻度调整
    刻度调整需要from matplotlib.pyplot import MultipleLocator
    还有这个语句self.ax3d.xaxis.set_major_locator(length)
        self.ax3d = self.__fig.add_subplot(projection='3d')
        self.ax3d.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})
        self.ax3d.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})
        self.ax3d.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})
        length = MultipleLocator(1)
        ylength = MultipleLocator(1)  
        self.ax3d.set_xlim([-5, 5])
        self.ax3d.set_ylim([-0, 11])
        self.ax3d.set_zlim([-5, 5])		# 坐标轴的调整
        self.ax3d.xaxis.set_major_locator(length) 
        self.ax3d.yaxis.set_major_locator(ylength)
        self.ax3d.zaxis.set_major_locator(length)

这里我遇到了一个问题
当 self.ax3d.yaxis.set_major_locator(ylength) 这个语句的参数设置为length时就会出现这个样子在这里插入图片描述
但是在我新增了一个一模一样的ylength后 就可以正常的显示所有刻度了
在这里插入图片描述


熟练掌握

提示:没有什么比多做多练更好的方法 来熟练掌握知识了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值