V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wzw
V2EX  ›  程序员

开发一个这样的系统(根据数据画波形图+选取区域调整数据), 选哪个 Pyside/C#/Electron 等 比较快速可行 [详细情况请看图片 GIF 动图]

  •  1
     
  •   wzw · Dec 31, 2019 · 8172 views
    This topic created in 2311 days ago, the information mentioned may be changed or developed.

    需求:

    • 根据数据画出波形图
    • 功能和下面图示一摸一样, 目前这个软件没有更新了, 有一些不解决不能用的 BUG 了.
    • 对图上数据进行处理, 选取区域 上下调整
    • Windows 或 Linux 运行, 所以不一定要跨平台. 只在 Windows 上面也就够了
    • 要快速方便实现, 实际处理的数据量大约是 10w~100w 个点

    选项:

    1. Pyside (从来没弄过 GUI 开发自己会 Python, 所以第一考虑尝试 PyQt 可能要商用所以选 Pyside2)
    2. C# (Windows GUI 开发利器, 如果选用这个 C#需要学一下)
    3. Electron 是不是不合适? 如果有现成资源, 又合适就也可以尝试 (有 Vue 经验)
    4. ...

    资料:

    • 2 张静态图片
    • 1 张 GIF 图 45 秒 (左下角是录制的时候用的快捷键)

    1.png

    2.png

    3.gif


    Pyside/C#/Electron 用哪个最合适呀? 谢谢你的回答

    Supplement 1  ·  Dec 31, 2019
    再次确认了一下, 数据量最多 10w 了
    Supplement 2  ·  Jan 2, 2020
    更具调研, 只要处理 10w 个点一下, 又考虑到方便,

    准备用 Electron + echarts 来试试先.

    pyqt 和 c# 都没有找到 现成比较好的例子, 要不然也试试了
    50 replies    2020-01-06 08:43:05 +08:00
    yixiang
        1
    yixiang  
       Dec 31, 2019   ❤️ 2
    web 技术开发浏览器里运行最快捷。
    murmur
        2
    murmur  
       Dec 31, 2019   ❤️ 1
    这就是个示波器,别人好像都是 windows 程序
    adjusted
        3
    adjusted  
       Dec 31, 2019   ❤️ 1
    d3 做过类似的
    wzw
        4
    wzw  
    OP
       Dec 31, 2019
    @yixiang #1 修改数据 有类似组件?
    @murmur #2 这是一个 10 多年前 别人开发的
    @adjusted #3 D3.js 吗
    Mithril
        5
    Mithril  
       Dec 31, 2019   ❤️ 1
    看一下 echart 的例子
    https://www.echartsjs.com/examples/zh/index.html
    最简单的就是 vue 加上 echart 做页面,后台 python 或者 asp.net core 随便写个 server,哪个语言熟你就用哪个。
    想要做成本地应用就套个 Electron,其实直接做 web 就可以了。
    murmur
        6
    murmur  
       Dec 31, 2019   ❤️ 1
    echart 我还真用过,他的数据交互必须有个肉眼可见的点,这个点直接决定你能操作的区域,这么密集的曲线图画点不吐了
    wzw
        7
    wzw  
    OP
       Dec 31, 2019
    @Mithril #5 10w-100w 个点的时候 web 方面可能会有点卡顿了吧
    @murmur #6 echart 应该可以选取与进行调整
    wzw
        8
    wzw  
    OP
       Dec 31, 2019
    @adjusted #3 有没有 demo 或者资料给我一下, 谢谢
    yejinmo
        9
    yejinmo  
       Dec 31, 2019   ❤️ 1
    大数据量不要用 Web
    工业行业的点名不要 Web
    wpblank
        10
    wpblank  
       Dec 31, 2019
    上学那会做过一个简陋的波形显示,带傅里叶变换什么的,不过数据量很小,现学 c#做的
    wzw
        11
    wzw  
    OP
       Dec 31, 2019
    @wpblank #10 再次确认了一下, 数据量最多 10w 了
    qyvlik
        12
    qyvlik  
       Dec 31, 2019
    #9 @yejinmo 工业行业点名不要 Web,可以具体说说吗?
    yejinmo
        13
    yejinmo  
       Dec 31, 2019
    @qyvlik #12

    主要是稳定性差,数据量激增的情况下页面会卡,工业要的是性能稳定不是画面绚丽
    而且他们觉得网页不安全。。讲了 HTTPS 也觉得不安全,算是一种偏见吧
    myEzekiel
        14
    myEzekiel  
       Dec 31, 2019
    echart
    adjusted
        15
    adjusted  
       Dec 31, 2019
    我只能从 web 说说,基本上就是 d3-mouse 拿到鼠标位置对应线上的坐标然后画条横线和竖线,同时显示 10w 个点 svg 肯定会卡,如果真要同时显示不能 sample 的话就得用 canvas 了。
    wzw
        16
    wzw  
    OP
       Dec 31, 2019 via iPhone
    @adjusted echart 可能可以……
    tuduweb
        17
    tuduweb  
       Jan 2, 2020
    vc or qt
    tuduweb
        18
    tuduweb  
       Jan 2, 2020
    @tuduweb 说错了 c# or qt
    wzw
        19
    wzw  
    OP
       Jan 2, 2020
    @tuduweb #18 我找了一圈没有看到比较类似现成的例子呀.

    你又什么推荐吗
    tuduweb
        20
    tuduweb  
       Jan 2, 2020
    @wzw 以前看过 qt 下一个第三方 chart 库的示波器的例子,刚找了一圈没找到了。
    重写一下 chart 的界面渲染,数据量再大都没问题。
    tuduweb
        21
    tuduweb  
       Jan 2, 2020
    @wzw 新版本的 qt 里面的示例里面有 scope 例子,渲染 10000 samples 不卡。
    wzw
        22
    wzw  
    OP
       Jan 2, 2020
    @tuduweb #21 我明天看看了, 你用过 pyside 吗? 谢谢
    tuduweb
        23
    tuduweb  
       Jan 2, 2020
    @wzw 没有 不过 python 下好像只能单线程运行,我觉得在大数据量的情况下会阻塞 GUI 渲染事件。
    ipwx
        24
    ipwx  
       Jan 2, 2020 via Android   ❤️ 1
    c++ qt, c#,继承画布控件自己绘制界面,肯定行。其他方案各种捣鼓说不定还不如这个更容易做
    charlie21
        25
    charlie21  
       Jan 2, 2020 via Android
    为啥没人推荐 Java swing 或 JavaFX
    YongkeLi
        26
    YongkeLi  
       Jan 2, 2020 via Android   ❤️ 1
    wpf devexpress
    wzw
        27
    wzw  
    OP
       Jan 2, 2020
    @tuduweb #23 10w 个点,应该还好吧.

    @ipwx #24 echarts 不合适,我就用 qt 或者 c# 试试吧.

    @charlie21 #25 java 十多年没去碰了,,,

    @YongkeLi #26 正在用虚拟机 下载例子看看 demo, 你用过吗
    Hellert
        28
    Hellert  
       Jan 2, 2020 via Android
    天,你截图上的这个软件居然是 VB6 做的。
    Hellert
        29
    Hellert  
       Jan 2, 2020 via Android
    推荐用 WinFoms+DevExpress,最快。
    wzw
        30
    wzw  
    OP
       Jan 2, 2020
    @Hellert #28 十多年前的呀. 而且一直不更新了.


    @Hellert #29 WinFoms+DevExpress, 是否有更多资料. 不会让我看一遍官方文档吧. 而且 DevExpress 不便宜呀
    dixeran
        31
    dixeran  
       Jan 2, 2020 via Android
    Qt QCharts 了解一下
    Keyes
        32
    Keyes  
       Jan 3, 2020
    建议还是走原生,QT 优先
    MakHoCheung
        33
    MakHoCheung  
       Jan 3, 2020
    Javafx+aot???
    BingoXuan
        34
    BingoXuan  
       Jan 3, 2020
    我用 chartjs 的,10k 个点很轻松,放大缩小显示各种信息很方便。
    linora
        35
    linora  
       Jan 3, 2020
    plotly or
    echarts
    wzw
        36
    wzw  
    OP
       Jan 3, 2020
    @BingoXuan #34 那我外包给你, 哈哈,
    目前需求是 10w 个点, 扩大 10 倍. 功能已经在动画演示中了
    BingoXuan
        37
    BingoXuan  
       Jan 3, 2020
    @wzw
    我觉得我们可以讨论一下,刚好我这边也有类似需求(虽然并不急迫)。
    wzw
        38
    wzw  
    OP
       Jan 3, 2020
    @BingoXuan #37 能做到动图上面的效果吗? 不一定要一样

    你坐标在哪
    BingoXuan
        39
    BingoXuan  
       Jan 3, 2020
    @wzw
    我广州,我看 plotly api 貌似大体能实现。加个微信聊聊? YmluZ28wNDE2NQ==
    wzw
        40
    wzw  
    OP
       Jan 3, 2020
    @BingoXuan #39 我们也在尝试 echarts 了, 看来 plotly 更适合

    实在不行 继续试试 pyqt 和 c#
    zzzzzdai
        41
    zzzzzdai  
       Jan 3, 2020
    我用 Qt 的 qcustomplot 做过,几十万的数据量,自带函数用起来很方便,类似 MATLAB
    Kirscheis
        42
    Kirscheis  
       Jan 3, 2020 via Android
    你这头像和需求,差点以为是我同事。。

    以前 python 写过一个,前端套的 electron,5 小时就完工了。这么点数据量怎么搞都不会卡的,楼主放心冲
    sankongbu
        43
    sankongbu  
       Jan 3, 2020
    使用客户端做图形渲染会比 web 端性能更高吗?之前做关系网络图,10K 的节点 web 端就崩了
    wzw
        44
    wzw  
    OP
       Jan 3, 2020
    @Kirscheis #42 这么巧... 用了啥组件呀,能细说一下吗, 居然五个小时就完工了


    @sankongbu #43 客户端做图形渲染会比 web 端性能更高 --- 我了解到 应该高不少吧.
    lff0305
        45
    lff0305  
       Jan 3, 2020
    数据存放在 ElasticSearch / InfluxDB / Prometheus 里面
    图表用 Kibana / Grafana
    wzw
        46
    wzw  
    OP
       Jan 3, 2020
    @lff0305 #45 看了 Grafana demo, 没有看到 修改数据的功能呀
    ljpCN
        47
    ljpCN  
       Jan 3, 2020 via Android
    @murmur 我猜你说的是折线图里的每个数据点的圆圈,那个是可以隐藏的
    jones2000
        48
    jones2000  
       Jan 5, 2020
    web 使用 canvas, 应该是可以的。主要是用 js 开发快, 用 c++ GUI 开发效率是高, 但是开发周期长。
    WilliamLin
        49
    WilliamLin  
       Jan 5, 2020
    @BingoXuan #39 你写的包含了点的拖动等动态调整的功能吗?
    BingZ
        50
    BingZ  
       Jan 6, 2020
    Qt +1,工控领域不二之选。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3280 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 13:16 · PVG 21:16 · LAX 06:16 · JFK 09:16
    ♥ Do have faith in what you're doing.