精华内容
下载资源
问答
  • 【Python可视化】matplotlib画动态曲线

    千次阅读 2021-01-05 20:35:21
    matplotlib是python里最popular的画图工具,最近发现它可以用来画动态图。可以看看AI模型训练时候的loss曲线,accuracy变化等等。客观上,比tensorboard更简洁。 代码还是很简单滴: import matplotlib.pyplot as...

    matplotlib是python里最popular的画图工具,最近发现它可以用来画动态图。可以看看AI模型训练时候的loss曲线,accuracy变化等等。客观上,比tensorboard更简洁。

    代码还是很简单滴:

    import matplotlib.pyplot as plt
    from random import random
    
    def do_something():
        for p in range(10000000):
            res += p
    
    fig, ax = plt.subplots()
    x = []
    y = []
    res = 0
    for i in range(50):
        x.append(i)
        y.append(50*random())
        ax.cla() # clear plot
        ax.plot(x, y, 'r', lw=1) # draw line chart
        # ax.bar(y, height=y, width=0.3) # draw bar chart
        do_something()    
        plt.pause(0.1)
    

    展示效果如下:

    同时支持折线图和柱状图,只需设置x和y两个list就行。至于那个do_something函数,你可以改为任意运算函数,y值可以由这个运算函数得出,这样使得动态图有意义

    有疑问可留言~

    展开全文
  • 从txt种获取数据 并且通过动态曲线显示import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationimport time# Fixing random state for reproducibilitynp.random.seed(196)path...

    从txt种获取数据 并且通过动态曲线显示

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    import time

    # Fixing random state for reproducibility

    np.random.seed(196)

    path = "feed.txt"

    file = open(path, 'r')

    data = []

    for line in file.readlines():

    lineArr = line.strip().split()

    data.append(int(lineArr[0]))

    xdata = np.arange(0,len(data))

    #初始数据绘图

    dis = np.zeros(40)

    dis2 = dis

    fig, ax = plt.subplots()

    line, = ax.plot(dis)

    ax.set_ylim(0, 100)

    plt.grid(True)

    ax.set_ylabel("distance: m")

    ax.set_xlabel("time")

    def update(frame):

    global dis

    global dis2

    global line

    #读入模拟

    a = frame

    time.sleep(np.random.rand()/10)

    #绘图数据生成

    dis[0:-1] = dis2[1:]

    dis[-1] = a

    dis2 = dis

    #绘图

    line.set_ydata(dis)

    #颜色设置

    plt.setp(line, 'color', 'b', 'linewidth', 2.0)

    return line

    ani = animation.FuncAnimation(fig, update,frames=data, interval=10)

    plt.show()

    输出:

    1b8787c28441a744d54e36c6f9cbc86a.jpg

    补充拓展:Python绘制mes曲线实例

    mes曲线:累计误差曲线。一般用于测试生成的关键点与标定的关键点间的差异情况,差异一般是指两点间的欧氏距离。

    标记点坐标 p_g(x,y)

    预测点坐标 p_t(x,y)

    dist(p_g,p_t)可以计算两点间的欧氏距离。

    def dist(point1,point2):

    return ((point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2) ** 0.5

    在人脸的关键点检测中,dist()计算的距离/双眼间距离 进行归一化。将归一化后的值append到MSE,调用drawCDFSingle(MSE)即可看到累计误差曲线。

    def drawCDFSingle(MSE):

    plotDataset = [[], []]

    plt.grid()

    plt.xlabel("pixel error")

    plt.ylabel("Fraction of number of landmarks")

    plt.title('CDF')

    for i in range(len(MSE[0])):

    sumnum = 0

    mse_point = [x[i] for x in MSE]

    mse_point.sort()

    plotDataset[0]=[]

    plotDataset[1]=[]

    for t in range(len(mse_point)):

    plotDataset[0].append(float(t+1)/len(mse_point))

    # sumnum=sumnum+float(mse_point[t])

    plotDataset[1].append(float(mse_point[t]))

    plt.plot(plotDataset[1],plotDataset[0] , color[i%len(color)]+linestyle[i%len(linestyle)], linewidth=2, label=i)

    plt.legend() # make legend

    plt.show()

    0bcf5b19433e9383d3d7506fc4d1505b.jpg

    以上这篇python绘制动态曲线教程就是小编分享给大家的全部内容了,希望能给大家一个参考

    您可能感兴趣的文章:

    展开全文
  • 【实例简介】用jfreechart实现动态曲线,有系统产生随机数,然后画出曲线,并能实时显示曲线【实例截图】【核心代码】//实时曲线——时序图import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;...

    【实例简介】用jfreechart实现动态曲线,有系统产生随机数,然后画出曲线,并能实时显示曲线

    【实例截图】

    03d218a1e891b4e700c23042eb7a00e8.gif

    【核心代码】

    //实时曲线——时序图

    import org.jfree.chart.ChartFactory;

    import org.jfree.chart.ChartPanel;

    import org.jfree.chart.JFreeChart;

    import org.jfree.chart.axis.ValueAxis;

    import org.jfree.chart.plot.XYPlot;

    import org.jfree.data.time.Millisecond;

    import org.jfree.data.time.TimeSeries;

    import org.jfree.data.time.TimeSeriesCollection;

    import java.awt.*;

    import javax.swing.*;

    import java.awt.event.*;

    public class RealTimeChart extends ChartPanel implements Runnable,ActionListener

    {

    private static final long serialVersionUID = 1L;

    static JLabel show;//显示随机数

    private static TimeSeries timeSeries;

    public RealTimeChart(String chartContent,String title,String yaxisName)

    { //构造函数,第一个参数为图表内容,第二个参数为图表标题,第三个参数为纵坐标标题

    super(createChart(chartContent,title,yaxisName)); //调用超类的方法createChart

    }

    private static JFreeChart createChart(String chartContent,String title,String yaxisName){

    //创建时序图对象

    timeSeries = new TimeSeries(chartContent,Millisecond.class);

    TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeSeries);

    JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(title,"Time",yaxisName,timeseriescollection,true,true,false);

    XYPlot xyplot = jfreechart.getXYPlot(); //设定坐标系

    //横坐标设定

    ValueAxis valueaxis = xyplot.getDomainAxis();

    //横坐标自动设置数据轴数据范围

    valueaxis.setAutoRange(true);

    //横坐标固定数据范围 30s

    valueaxis.setFixedAutoRange(30000D);

    //纵坐标设定

    valueaxis = xyplot.getRangeAxis();

    return jfreechart;

    }

    public void run()

    {

    while(true)

    {

    try

    {

    timeSeries.add(new Millisecond(), randomNum()); //第一个参数(当前时间)为横坐标的值

    Thread.sleep(1000); //每隔一秒产生一个随机数

    }

    catch (InterruptedException e) {} //异常处理

    }

    }

    private long randomNum() //产生随机数

    {

    show.setText("随机数:" (Math.random()*20 80));

    return (long)(Math.random()*20 80); //返回随机数

    }

    public static void main(String[] args)

    {

    JFrame frame=new JFrame("实时曲线");

    RealTimeChart rtcp=new RealTimeChart("Real-time curves","Random real-time curves","Random Number");

    frame.getContentPane().add(rtcp,BorderLayout.CENTER);

    show=new JLabel();

    frame.getContentPane().add(show,BorderLayout.SOUTH);

    frame.pack();//窗口大小可随意变化

    frame.setVisible(true);

    (new Thread(rtcp)).start(); //启动线程,并自动执行run()函数

    frame.addWindowListener(new WindowAdapter() //关闭窗口事件

    {

    public void windowClosing(WindowEvent windowevent)

    {

    System.exit(0);

    }

    });

    }

    }

    展开全文
  • Qt绘制动态曲线

    2021-01-13 23:00:17
    //设置曲线表的名称 QVBoxLayout *layout = ui->verticalLayout;//垂直布局 方框类 layout->addWidget(chartView);//在方框内添加图表视窗 timeId = startTimer(0);//感觉像是刷新频率的延时。 定义了timeId整型变量...

    首先*.pro文件中加一句

    QT += charts

    然后

    mainwindow.cpp文件如下:

    #include "mainwindow.h"

    #include "ui_mainwindow.h"

    #include "QtCharts/QChart"

    #include "QLineSeries"

    #include "QValueAxis"

    #include "QTimer"

    #include "QTime"

    #include "QList"

    #include "qmath.h"

    #include "QPointF"

    #include "QDebug"

    //#include

    #include "QChartView"

    QT_CHARTS_USE_NAMESPACE

    QChart *m_chart;

    QLineSeries *m_series;

    //QList dataList;//存储业务数据

    int maxSize = 5000;

    int tem=0,flag=0;

    //QTimer updateTimer;

    int timeId;

    MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),//默认初始化?

    ui(new Ui::MainWindow)

    {

    ui->setupUi(this);

    m_chart = new QChart;//图表类

    QChartView *chartView = new QChartView(m_chart);//图表视窗类

    // v.setRubberBand(QChartView::HorizontalRubberBand);

    chartView->setRubberBand(QChartView::RectangleRubberBand);//在图表窗口设置矩形橡皮筋

    // chartView->setRubberBand();

    m_series = new QLineSeries;//线 连续类

    m_chart->addSeries(m_series);//在图表类添加连续线

    for(int i=0;i

    m_series->append(i,0);//在线连续类附加坐标x&y

    }

    m_series->setUseOpenGL(true);//openGl 加速

    qDebug()<useOpenGL();

    QValueAxis *axisX = new QValueAxis;//数值轴类

    axisX->setRange(0,maxSize);//设置X坐标的范围

    axisX->setLabelFormat("%g");//设置标签格式

    axisX->setTitleText("axisX");//设置X坐标的标题名称

    QValueAxis *axisY = new QValueAxis;

    axisY->setRange(0,2000);//设置Y坐标的范围 可以设置负数

    axisY->setTitleText("axisY");//设置Y坐标的标题名称

    m_chart->setAxisX(axisX,m_series);//将轴添加在图表中

    m_chart->setAxisY(axisY,m_series);//

    m_chart->legend()->hide();//图列隐藏 有一个蓝色的小点被隐藏了。

    m_chart->setTitle("demo");//设置曲线表的名称

    QVBoxLayout *layout = ui->verticalLayout;//垂直布局 方框类

    layout->addWidget(chartView);//在方框内添加图表视窗

    timeId = startTimer(0);//感觉像是刷新频率的延时。 定义了timeId整型变量作为刷新的定时器变量。

    }

    double MainWindow::getData(double time){

    double s = qCos( time * M_PI * 2 ) ;

    return s;

    }

    void MainWindow::timerEvent(QTimerEvent *event){//定时器事件

    if(event->timerId()==timeId){//定时器到时间,//模拟数据填充

    static QTime dataTime(QTime::currentTime());//现在的时间

    long int eltime = dataTime.elapsed();//消逝的时间

    static int lastpointtime = 0;//最后一点时间

    int size = (eltime - lastpointtime);//数据个数

    qDebug()<"<

    if(isVisible()){//判断一个控件是否可见

    //矢量类 < 打印函数类 >

    QVector oldPoints = m_series->pointsVector();//线连续类 点向量//Returns the points in the series as a vector

    QVector points;//点

    for(int i=size;i

    points.append(QPointF(i-size ,oldPoints.at(i).y()));//替换数据用

    }

    if(tem < 1000 && flag == 0)

    {

    tem+=10;

    if(tem>=999)

    flag=1;

    }

    if(tem >0 && flag==1)

    {

    tem-=10;

    if(tem<=0)

    flag=0;

    }

    qint64 sizePoints = points.count();

    for(int k=0;k

    //points.append(QPointF(k+sizePoints,1.2*getData((((double)lastpointtime+k+1)/1000))));

    points.append(QPointF(k+sizePoints,tem));

    }

    m_series->replace(points);//替换以前的点

    lastpointtime = eltime;//消逝的时间复制给最后一点的时间。

    }

    }

    }

    MainWindow::~MainWindow()

    {

    delete ui;

    }

    然后mainwindow.h如下:

    #ifndef MAINWINDOW_H

    #define MAINWINDOW_H

    #include

    namespace Ui {

    class MainWindow;

    }

    class MainWindow : public QMainWindow

    {

    Q_OBJECT

    public:

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

    protected:

    void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;

    private:

    Ui::MainWindow *ui;

    double getData(double time);

    };

    #endif // MAINWINDOW_H

    在此作者的基础上做了一些备注与修改:

    https://blog.csdn.net/HiccupHiccup/article/details/74996618

    原文:https://www.cnblogs.com/jiuqiang/p/10048259.html

    展开全文
  • 三、借助定时器实现动态曲线图的绘制 本示例是生成两条不同颜色的动态sin曲线。 这部分在构造函数中。 customPlot->addGraph(); // blue line customPlot->graph(0)->setPen(QPen(QColor(40, 110, 255))); ...
  • Qt QML的曲线控件QChartView使用 曲线显示,最难的部分是数据的处理上,尤其是要显示动态数据时。 1. 控件配置 2. 数据的来源 3. 完成动态显示 提供源代码,提供技术支持
  • 效果是这个样子的: 用到的模块: * matplotlib.pyplot * matplotlib.animation.... 以上这篇使用python动态生成波形曲线的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
  • color:['#FF3333',//温度曲线颜色 '#53FF53',//湿度曲线颜色 '#B15BFF',//压强图颜色 '#68CFE8',//雨量图颜色 '#FFDC35' //风速曲线颜色 ], toolbox: {//工具栏显示 show:true, feature: { saveAsImage: {}//显示...
  • chart->setTitle("实时动态曲线"); chart->createDefaultAxes(); chart->axisX()->setRange(0, 300); chart->axisY()->setRange(0, maxY); chartView = new QChartView(chart); chartView->setRenderHint(QPainter:...
  • 上述数据为本次绘制动态曲线图所需数据,即从 gapminder 网站下载的平均个人收入(Income per person)数据整理而成,处理代码主要如下: 这里 eq(nation) 操作为提取自己所需数据,最后通过 pandas 的 ...
  • delphi chart 动态曲线

    2021-05-12 16:22:30
    //删除曲线的第一笔数据 tmpx := Series2.XValues[1]-Series2.XValues[0]; //取得X轴数值间隔 tmpy := Random(100); Series2.AddXY(Series2.XValues.Last + tmpx,Series2.YValues.Last + tmpy - 50); //写新数据 end...
  • 不在同一个图表中)绘制静态数据的双曲线(在同一个图表中)绘制静态数据的双曲线(在同一个窗口,不同的图标中)绘制动态实时图表数据绘制单条动态曲线绘制动态数据的双曲线(在同一个窗口,不同的图标中)数据来源...
  • 在jupyter Notebook上绘制动态曲线1、前言2、实现原理3、实现源码 1、前言 在上一篇文章中介绍了在如Pycharm、VsCode、IDEA等,非交互式编程软件中绘制动态曲线的实现原理,那么问题来了:在如jupyter notebook这类交互...
  • matlab 怎么动态曲线

    2021-01-16 18:17:52
    展开全部可以用Matlab制作gif来实现,下面是一个示例代码:%适用于在一幅图中表现给e69da5e887aa62616964757a686964616f31333339666662图过程,即图形的增长过程%主要用来绘制三维的欧拉公式clc;...
  • PyQt5实现动态绘制拟合曲线 拟合曲线是基于最小二乘法 绘图基于matplotlib.figure 需要的加Q624747843
  • 欢迎关注我的个人网站:www.sunier.cn <template> <body> <div> <el-button type="primary" @click="readJson()">读取JSON</el-button> </div> <div clas
  • QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线、动态曲线、多重坐标曲线,柱状图,蜡烛图等。只需要在项目中加入头文件qcustomplot.h和qcustomplot.cpp文件,然后使一个widget提升为QCustomPlot类,即可...
  • ZedGraph的在线文档官网的源代码http://sourceforge.net/projects/zedgraph/?source=directoryzedgraph的demo在线范例http://zedgraph.sourceforge.net/samples.html这里介绍了如何实现动态加载数据,并且提供了...
  • Unity LineRenderer画曲线 文章目录Unity LineRenderer画曲线一、新建一个空物体二、编写脚本三、补充 一、新建一个空物体 第一步:在场景中新建一个空物体,以便后面步骤挂载脚本。 二、编写脚本 代码如下(示例)...
  • gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @net1_OpeningFcn, ... 'gui_OutputFcn', @net1_OutputFcn, ... .
  • 文章目录椭圆双曲线抛物线极坐标方程 作为让高中生心脏骤停的四个字,对于高考之后的人来说可谓刻骨铭心,所以定义不再赘述,直接撸图,其标准方程分别为 椭圆 双曲线 抛物线 x2a+y2b=1\frac{x^2}{a}+\frac{...
  • Matlab中一个图像框中多条动态曲线的更新前言1、了解函数2、上代码3、运行结果: 前言 Matlab中通过refeshdata()这个函数,可以更新各种数据,这个结合plot()函数可以实现动态的效果 1、了解函数 doc refresh...
  • 显示动态曲线及图例 图例文本颜色与其对应的曲线一致 右侧显示实时数据,数据点以圆点样式显示,实时数据显示无文本框 曲线数值跟踪,当鼠标移动时,显示鼠标所在点的所有曲线的y值 关键的点在代码中都有注释,正文...
  • 1 深度学习训练过程中实时动态显示loss和acc曲线 可参考代码如下: # -*- coding: utf-8 -*- import matplotlib.pyplot as plt if __name__ == '__main__': train_loss = 5 val_loss = 5 train_acc = 0.0 val_...
  • 相信许多小伙伴都想知道CSS+JS如何实现物体的曲线运动吧! 其实原理就是运用数学用的函数公式,本文运用的是sin函数上进行的基础变形.今天的主要目标就是让这张图的里足球运动起来。 首先肯定要先把这张图拆成两部分...
  • 现在有个项目需要实时显示温度,可以直接用pyqtgraph实现,但是界面和曲线的调整实在不会,用了一段时间后放弃了。关于pyqtgraph实时绘图的代码和效果图如下。 import time import temp_calcu_3_onestep import ...
  • 在机器学习和深度学习训练过程中加入动态曲线图1、动态曲线图画图原理2、在机器学习中引入动态曲线图 1、动态曲线图画图原理 这里假设我们使用python的matplotlib工具包进行画图操作,其大致原理如下: a)、开始工作前...
  • 用Flash与C语言制作工程实时数据动态曲线图宋国志songguozhi1234@163.com本文旨在说明如何利用Flash和C语言制作BS模式下的实时数据动态曲线图,现在流行的实时数据曲线图,大都是采用了CS模式的开发语言,BS模式的虽...
  • 【写在前面】 Qt 中有相当方便的绘制接口 ( 由 QPainter 提供 ) 。 例如贝塞尔曲线的 API: ...因此,我想到利用贝塞尔的公式生成曲线点,然后用直线来连接,即可实现「 N阶贝塞尔曲线绘制 」。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,906
精华内容 31,962
关键字:

动态曲线网站