Example #1
0
    def initUi(self):
        self.layout = QVBoxLayout(self)

        # 创建matplot画布
        self.mpl = PlotCanvas(self, width=9, height=6, dpi=100)
        self.mpl2 = PlotCanvas(self, width=9, height=6, dpi=100)
        self.mpl3 = PlotCanvas(self, width=9, height=6, dpi=100)
        # mpl.draw_one_line()

        # 加载数据
        # 在不同的画布上画出来
        # 将所有f分页加入到tabWidget上
        lines = load_all_lines()

        self.mpl.draw_one_line(lines[0])
        self.mpl2.draw_one_line(lines[1])
        self.mpl3.draw_one_line(lines[2])

        self.stack.addTab(self.mpl, 'td=0.12')
        self.stack.addTab(self.mpl2, 'td=0.144')
        self.stack.addTab(self.mpl3, 'td=0.176')

        self.layout.addWidget(self.stack)
Example #2
0
    def draw_all_stack_tab(self):
        # 绘制所有图像
        # 添加到stack_tabWidget上

        # 创建matplot画布
        self.tab1 = PlotCanvas(self, width=9, height=6, dpi=100)
        self.tab2 = PlotCanvas(self, width=9, height=6, dpi=100)
        self.tab3 = PlotCanvas(self, width=9, height=6, dpi=100)
        # mpl.draw_one_line()

        # 加载数据
        # 在不同的画布上画出来
        # 将所有f分页加入到tabWidget上
        lines = load_all_lines()

        self.tab1.draw_one_line(lines[0])
        self.tab2.draw_one_line(lines[1])
        self.tab3.draw_one_line(lines[2])

        # 将所有的tab添加到stack_tabWidget上
        self.stack_tabWidget.addTab(self.tab1, 'td=0.12')
        self.stack_tabWidget.addTab(self.tab2, 'td=0.144')
        self.stack_tabWidget.addTab(self.tab3, 'td=0.176')
        pass
Example #3
0
def zoom_pic():
    # 绘制散点图
    # 缩放图像
    # figure = plt.figure()

    # 创建主图层
    figure = plt.figure(figsize=(9, 6), dpi=100)
    # figure.suptitle('点击左子图 右边显示放大10倍的细节', fontsize=14, fontweight='bold')
    # 加载曲线数据
    # x, c, s = load_date()

    # 创建两个子图
    # 左子图
    src = plt.subplot(
        111)  # 第一行的图 211 --> 类似(n,m,o) (n) 代表 主图分n两行 每行分成m列代表每行分成

    # 记载所有曲线信息
    lines = load_all_lines()
    # log("lines = ({})".format(lines))

    # i是曲线的颜色参数
    i = 0
    for line in lines:
        title, rd, Td = line
        xarr = rd
        yarr = Td

        # log('rd = {}'.format(rd))
        # 自动获取不同线条颜色
        line_color = chose_color(i)
        i += 1

        # 选择颜色, 绘制曲线
        # 分别将曲线数据 加载到src图上
        src.plot(xarr,
                 yarr,
                 color=line_color,
                 linewidth=2.5,
                 linestyle='-',
                 label='Td=({})'.format(title))  # 增加了label以便增加图例

        # 获取当前yarr拐点位置
        t = find_inflection_point(yarr)
        # log('y的拐点({})'.format(t))
        # 将拐点显示出来
        xzb = xarr[t]
        yzb = yarr[t]
        src.plot(xzb, yzb, 'o')

        # 下面部分是是操作lenged标签位置
        src.legend(loc='best')  # 添加个图例 设置图例自动调整

    # 根据所有拐点的数据
    # 设置src缩放图的x轴上下限 和title
    xlim_min, xlim_max = get_zoomed_x_axes_limts()
    zoom_xlim = (xlim_min, xlim_max)
    # zoom_ylim = (ylim_min, ylim_max)
    src.set(xlim=zoom_xlim, autoscale_on=False, title='缩放图像')

    # 设置图例可拖动
    leg = plt.legend()
    if leg:
        leg.draggable()

    # 显示图像
    plt.show()
    pass
Example #4
0
from PyQt5 import QtCore
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import (QApplication, QMainWindow, QVBoxLayout,
                             QSizePolicy, QAction, QLabel, QWidget,
                             QStackedWidget, QPushButton, QTabWidget, QAction,
                             QMessageBox, QFileDialog, QHBoxLayout)
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar

import matplotlib.pyplot as plt
from MatploWidget import PlotCanvas  # qt绘制matplotlib图像的类
from mainFrom import Ui_MainWindow  # 弹出为屏幕中心主窗口
from loadlines import load_all_lines  # 加载数据
# 添加曲线到画布上
from PyQt5.QtWidgets import QDesktopWidget, QApplication, QMainWindow, QPushButton

from utils import log
# from MatploWidget import PlotCanvas

fig = plt.figure()
ax = fig.add_subplot(111)

lines = load_all_lines()

tab1 = PlotCanvas(width=9, height=6, dpi=100)

tab1.draw_one_line(lines[0])
# fig.add_subplot(tab1)

tab1.draw()
# plt.show()
Example #5
0
def get_zoomed_x_axes_limts():
    # 接收所有曲线的信息
    # 根据缩放函数
    # 返回合适的x轴的上下限
    # 缩放函数
    # 1.寻找拐点
    #       寻找拐点的位置
    # 2.获取极值点附近的点数据
    #       获取所以拐点的数据
    #       拐点的y坐标决定 y轴上限
    #       拐点的x坐标决定 x轴上限
    #       获得点x, y的均值
    #       根据均值设置图像的x轴 y轴 的上下限

    lines = load_all_lines()

    # 所有曲线拐点所有x y数据
    ext_xzbs = []
    ext_yzbs = []

    #  所有曲线第一个值 都是最大值
    #  多根曲线将取最小的y作为缩放图的y上限

    # 获取任意一根曲线的第一个点上的x作为最小值x
    first = []

    # 找出曲线范围的最大最小值
    for line in lines:
        title, td, rd = line
        xarr = td
        yarr = rd

        f = xarr[0]
        first.append(f)
        # 获取当前拐点位置
        t = find_inflection_point(yarr)
        # 搜索y 点 左右某个 值小于某个数
        # 极值点的y坐标决定 y轴上限
        # 极值点的x坐标决定 x轴上限
        xzb = xarr[t]
        yzb = yarr[t]
        ext_xzbs.append(xzb)
        ext_yzbs.append(yzb)

    # 获取任意一根曲线的第一个点上的最小的x
    # 作为最小值x
    first = np.array(first)
    xarr_min = first.min()

    # 所有拐点的x y数据
    ext_xzbs = np.array(ext_xzbs)
    ext_yzbs = np.array(ext_yzbs)

    # 所有曲线拐点x的最大值
    ext_x_min, ext_x_max = ext_xzbs.min(), ext_xzbs.max()
    # ext_y_min, ext_y_max = ext_yzbs.min(), ext_yzbs.max()

    # 调整曲线的边界
    # ylim_min 根据xlim_max的最大的千分之一调整
    dis = 0.03
    ydis = 0.001

    xlim_min = xarr_min - dis * ext_x_max
    xlim_max = ext_x_max

    # ylim_min = yarr_min - abs(xlim_max * ydis)
    # ylim_max = ext_y_min * y_multiples
    # ylim_max = first.max()

    return xlim_min, xlim_max
    pass