• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wzw
V2EX  ›  程序员

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

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

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

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

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

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

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


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

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

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

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


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