me的保存路径怎么查看,ME软件使用

首页 > 经验 > 作者:YD1662022-11-07 10:50:33

集成应用

7.1. 集成Matplotlib

Matplotlib的后端子模块backends几乎支持所有的GUI库,wxPyton当然也不例外,backend_wxagg是专门为wxPyton生成canvas的类,只要传一个matplotlib.Figure实例即可。剩下的就是水到渠成了。

import numpy as npimport matplotlibfrom matplotlib.backends import backend_wxagg from matplotlib.figure import Figure import wx
matplotlib.use('TkAgg')matplotlib.rcParams['font.sans-serif'] = ['FangSong']matplotlib.rcParams['axes.unicode_minus'] = False
class MainFrame(wx.Frame): """从wx.Frame派生主窗口类""" def __init__(self, parent): """构造函数""" wx.Frame.__init__(self, parent, style=wx.DEFAULT_FRAME_STYLE) self.SetTitle('集成Matplotlib') self.SetIcon(wx.Icon('res/wx.ico')) self.SetBackgroundColour((224, 224, 224)) # 设置窗口背景色 self.SetSize((800, 600)) self._init_ui self.Center def _init_ui(self): """初始化界面""" self.fig = Figure self.canvas = backend_wxagg.FigureCanvasWxAgg(self, -1, self.fig) btn_1 = wx.Button(self, -1, '散点图', size=(80, 30)) btn_2 = wx.Button(self, -1, '等值线图', size=(80, 30)) btn_1.Bind(wx.EVT_BUTTON, self.on_scatter) btn_2.Bind(wx.EVT_BUTTON, self.on_contour) sizer_btn = wx.BoxSizer sizer_btn.Add(btn_1, 0, wx.RIGHT, 20) sizer_btn.Add(btn_2, 0, wx.LEFT, 20) sizer_max = wx.BoxSizer(wx.VERTICAL) sizer_max.Add(self.canvas, 1, wx.EXPAND | wx.ALL, 10) sizer_max.Add(sizer_btn, 0, wx. ALIGN_CENTER | wx.BOTTOM, 20) self.SetSizer(sizer_max) self.Layout def on_scatter(self, evt): """散点图""" x = np.random.randn(50) # 随机生成50个符合标准正态分布的点(x坐标) y = np.random.randn(50) # 随机生成50个符合标准正态分布的点(y坐标) color = 10 * np.random.rand(50) # 随即数,用于映射颜色 area = np.square(30*np.random.rand(50)) # 随机数表示点的面积 self.fig.clear ax = self.fig.add_subplot(111) ax.scatter(x, y, c=color, s=area, cmap='hsv', marker='o', edgecolor='r', alpha=0.5) self.canvas.draw def on_contour(self, evt): """等值线图""" y, x = np.mgrid[-3:3:60j, -4:4:80j] z = (1-y**5 x**5)*np.exp(-x**2-y**2) self.fig.clear ax = self.fig.add_subplot(111) ax.set_title('有填充的等值线图') c = ax.contourf(x, y, z, levels=8, cmap='jet') self.fig.colorbar(c, ax=ax) self.canvas.draw
if __name__ == '__main__': app = wx.App frame = MainFrame(None) frame.Show app.MainLoop

代码运行界面如下图所示。

me的保存路径怎么查看,ME软件使用(21)

7.2. 集成OpenGL

wx.glcanvas.GLCanvas是wxPython为显示OpenGL提供的类,顾名思义,可以将其理解为OpenGL的画板。有了这个画板,我们就可以使用OpenGL提供的各种工具在上面绘制各种三维模型了。下面的代码仅是一个demo,并未构建投影系统和视点系统。

import numpy as npfrom OpenGL.GL import *
import wxfrom wx import glcanvas
class MainFrame(wx.Frame): """从wx.Frame派生主窗口类""" def __init__(self, parent): """构造函数""" wx.Frame.__init__(self, parent, style=wx.DEFAULT_FRAME_STYLE) self.canvas = glcanvas.GLCanvas(self, style=glcanvas.WX_GL_RGBA|glcanvas.WX_GL_DOUBLEBUFFER|glcanvas.WX_GL_DEPTH_SIZE) self.context = glcanvas.GLContext(self.canvas) self.csize = self.canvas.GetClientSize self.SetTitle('集成OpenGL') self.SetIcon(wx.Icon('res/wx.ico')) self.SetBackgroundColour((224, 224, 224)) # 设置窗口背景色 self.SetSize((800, 600)) self.Center sizer_max = wx.BoxSizer sizer_max.Add(self.canvas, 1, wx.EXPAND|wx.ALL, 5) self.SetSizer(sizer_max) self.Layout self.Bind(wx.EVT_SIZE, self.on_resize) self.canvas.SetCurrent(self.context) glClearColor(0,0,0,1) # 设置画布背景色 self.draw def on_resize(self, evt): """窗口改变事件函数""" self.canvas.SetCurrent(self.context) self.csize = self.GetClientSize self.draw evt.Skip def draw(self): """绘制""" # 清除屏幕及深度缓存 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # --------------------------------------------------------------- glBegin(GL_LINES) # 开始绘制线段(坐标轴) # 以红色绘制x轴 glColor4f(1.0, 0.0, 0.0, 1.0) # 设置当前颜色为红色不透明 glVertex3f(-0.8, 0.0, 0.0) # 设置x轴顶点(x轴负方向) glVertex3f(0.8, 0.0, 0.0) # 设置x轴顶点(x轴正方向) # 以绿色绘制y轴 glColor4f(0.0, 1.0, 0.0, 1.0) # 设置当前颜色为绿色不透明 glVertex3f(0.0, -0.8, 0.0) # 设置y轴顶点(y轴负方向) glVertex3f(0.0, 0.8, 0.0) # 设置y轴顶点(y轴正方向) # 以蓝色绘制z轴 glColor4f(0.0, 0.0, 1.0, 1.0) # 设置当前颜色为蓝色不透明 glVertex3f(0.0, 0.0, -0.8) # 设置z轴顶点(z轴负方向) glVertex3f(0.0, 0.0, 0.8) # 设置z轴顶点(z轴正方向) glEnd # 结束绘制线段 # --------------------------------------------------------------- glBegin(GL_TRIANGLES) # 开始绘制三角形(z轴负半区) glColor4f(1.0, 0.0, 0.0, 1.0) # 设置当前颜色为红色不透明 glVertex3f(-0.5, -0.366, -0.5) # 设置三角形顶点 glColor4f(0.0, 1.0, 0.0, 1.0) # 设置当前颜色为绿色不透明 glVertex3f(0.5, -0.366, -0.5) # 设置三角形顶点 glColor4f(0.0, 0.0, 1.0, 1.0) # 设置当前颜色为蓝色不透明 glVertex3f(0.0, 0.5, -0.5) # 设置三角形顶点 glEnd # 结束绘制三角形 # --------------------------------------------------------------- glBegin(GL_TRIANGLES) # 开始绘制三角形(z轴正半区) glColor4f(1.0, 0.0, 0.0, 1.0) # 设置当前颜色为红色不透明 glVertex3f(-0.5, 0.5, 0.5) # 设置三角形顶点 glColor4f(0.0, 1.0, 0.0, 1.0) # 设置当前颜色为绿色不透明 glVertex3f(0.5, 0.5, 0.5) # 设置三角形顶点 glColor4f(0.0, 0.0, 1.0, 1.0) # 设置当前颜色为蓝色不透明 glVertex3f(0.0, -0.366, 0.5) # 设置三角形顶点 glEnd # 结束绘制三角形 # 交换缓冲区 self.canvas.SwapBuffers
if __name__ == '__main__': app = wx.App frame = MainFrame(None) frame.Show app.MainLoop

代码运行界面如下图所示。

me的保存路径怎么查看,ME软件使用(22)

原文链接:https://blog.csdn.net/xufive/article/details/124548040

me的保存路径怎么查看,ME软件使用(23)

END

成就一亿技术人

me的保存路径怎么查看,ME软件使用(24)

上一页23456下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.